doppelunique in postgres ohne wirkung

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • doppelunique in postgres ohne wirkung

    Morgen.

    Ich hab eine Tabelle mit einem PK auf einer SERIAL Wert und dann noch einem UNIQUE Constraint auf 2 Feldern.

    Sprich: UNIQUE( feld1 , feld2 ).

    So wie ich das verstanden habe müsste dieser Constraint es verhindern das in der Tabelle 2 mal eine Identische Kombination beider Werte auftaucht.

    Sprich:

    feld1 = 1 | feld2 = 2
    feld1 = 1 | feld2 = 3

    sollte gehen , aber

    feld1 = 1 | feld2 = 2
    feld1 = 1 | feld2 = 2

    sollte nicht gehen.

    So wie es aussieht macht dieser Constraint aber nichts von beidem da ich mittlerweile einige identische Einträge in der Tabelle habe.

    Der Constraint existiert und ist auch aktiv.

    Bleibt eigentlich nur noch dass ich was falsch verstanden habe und das so gar nicht geht.

    Kann ich das Problem mit einem nun mit einem Unique lösen, wenn ja was könnte ich falsch gemacht haben ?, oder brauche ich dazu einen Trigger ?

    Gruß Sono

  • #2
    Kann ich das Problem mit einem nun mit einem Unique lösen,
    ja

    , wenn ja was könnte ich falsch gemacht haben
    zeig mal das sql-create der tabelle
    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


    Kommentar


    • #3
      Ist eigentlich ne relativ primitive Tabelle:

      PHP-Code:
      CREATE TABLE webpages 
      pageid SERIAL PRIMARY KEY,
      pagename VARCHAR(255NOT NULL,
      titel VARCHAR(255),
      kommentar VARCHAR(255),
      statisch CHAR(1NOT NULL CHECK statisch 't' or statisch 'f' ),
      aktiv CHAR(1NOT NULL CHECKaktiv='t' or aktiv='f') ,
      pub CHAR(1NOT NULL CHECKpub='t' or pub='f') ,
      login CHAR(1NOT NULL CHECKlogin='t' or login='f'),
      erstelldatum TIMESTAMP NOT NULL DEFAULT now(),
      UNIQUE pagename typname )
      ); 
      Ich hab auch nochmal im Postgres Handbuch nachgelesen, und nach dem müsste es so gehen.

      Kommentar


      • #4
        was postgres angeht, kann ich dir nciht direkt helfen, jedoch sieht das create nicht so aus, wie es im mysql aussehen müsste.

        k.a. ob postgres hier einen eigenen dialekt hat?
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Kommentar


        • #5
          k.a. ob postgres hier einen eigenen dialekt hat?
          Ich würde mal sagen werder Postgres noch MySQL sind 100%tig reines SQL 92 bzw 99 ( soviel ich weiß ist das eigentlich gar keine DB ) von daher haben beide einen eigenen Dialekt.

          Ich hab das Problem jetzt gelöst indem ich die Tabelle gelöscht um mit dem hier geposteten String nochmal angelegt habe.

          Nun gehts.

          Scheins ist beim ersten Anlegen was schief gegangen oder ich hab ne fehlermeldung übersehen. Keine Ahnung. Hätte mich schon interessiert was es war. Egal , hauptsache es geht.

          Gruß Sono

          Kommentar

          Lädt...
          X