Fehlermeldung PROBLEM

white_flag

Neuer Benutzer
Beiträge
3
möchte beziehungen zwischen tabellen herstellen.
kriege wenn ich die anweisungen ausführe mal schon mal nicht die fehlermeldung angezeigt dass ein constraint nicht vorhanden ist, obwohl ich es definiert habe und die fehlermeldung auf eine zeile verweist die nach einer if-bediengung steht.
wenn ich alle anweisungen nach und nach in kommentare setze und die anweisungen nach jedem mal ausführen entkommentiere funktioniert das programm aber sobald ich eine neue anweisung hinzufüge funktioniert es wieder nicht und bekomme wieder die fehlermeldung angezeigt

meine anweisungen:

--constraint/einschränkungen löschen
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ProduktZutat]') AND type in (N'U'))
ALTER TABLE ProduktZutat DROP CONSTRAINT [ProduktZutat_Produkt]


IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ProduktZutat]') AND type in (N'U'))
ALTER TABLE ProduktZutat DROP CONSTRAINT [ProduktZutat_Zutat]

IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Preis]') AND type in (N'U'))
ALTER TABLE Preis DROP CONSTRAINT [Preis_Produkt]


IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Produkt]') AND type in (N'U'))
ALTER TABLE Produkt DROP CONSTRAINT [Produkt_Zahlung]

--Tabellen löschen
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ProduktZutat]') AND type in (N'U'))
DROP TABLE [ProduktZutat]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Produkt]') AND type in (N'U'))
DROP TABLE [Produkt]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Zutat]') AND type in (N'U'))
DROP TABLE [Zutat]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Preis]') AND type in (N'U'))
DROP TABLE [Preis]
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[Zahlung]') AND type in (N'U'))
DROP TABLE [Zahlung]

--tabellen u beziehungen erstellen


CREATE TABLE [Zahlung]
(
ZahlungID INT PRIMARY KEY,

)

CREATE TABLE [Produkt]
(
ProduktID INT PRIMARY KEY ,
ZahlungID int Constraint Produkt_Zahlung Foreign key references Zahlung (ZahlungID) ,

)


CREATE TABLE [Zutat]
(
ZutatID INT PRIMARY KEY
)


CREATE TABLE [ProduktZutat] (
ID INT PRIMARY KEY,
ProduktID INT CONSTRAINT ProduktZutat_Produkt Foreign Key REFERENCES Produkt (ProduktID),
ZutatID INT CONSTRAINT ProduktZutat_Zutat Foreign Key REFERENCES Zutat(ZutatID)
)

CREATE TABLE [Preis]
(
PreisID INT PRIMARY KEY,
ProduktID Int CONSTRAINT Preis_Produkt Foreign Key REFERENCES Produkt(ProduktID)
)
 
Werbung:
was genau ist denn nun das Problem? Ich habe via Copy&Paste Deine Create - Statements übernommen und die reine Syntax an PostgreSQL angepaßt (teilweise noch eine extra Spalte eingefügt):

Code:
test=#  CREATE TABLE Zahlung
test-#  (
test(#  ZahlungID INT PRIMARY KEY,
test(#  x text
test(#  );
CREATE TABLE
test=*#
test=*#  CREATE TABLE Produkt
test-#  (
test(#  ProduktID INT PRIMARY KEY ,
test(#  ZahlungID int references Zahlung (ZahlungID) ,
test(#  name text
test(#  );
CREATE TABLE
test=*#
test=*#
test=*#  CREATE TABLE Zutat
test-#  (
test(#  ZutatID INT PRIMARY KEY,
test(#  name text
test(#  );
CREATE TABLE
test=*#
test=*#
test=*#  CREATE TABLE ProduktZutat (
test(#  ID INT PRIMARY KEY,
test(#  ProduktID INT  REFERENCES Produkt (ProduktID),
test(#  ZutatID INT  REFERENCES Zutat(ZutatID)
test(#  );
CREATE TABLE
test=*#
test=*#  CREATE TABLE Preis
test-#  (
test(#  PreisID INT PRIMARY KEY,
test(#  ProduktID Int  REFERENCES Produkt(ProduktID)
test(#  );
CREATE TABLE
test=*#


das tut also fehlerfrei.
 
Hi,

klemm zwischen deine Befehle das Schlüsselwort "GO", damit die Ausführung auch committed wird.

Beispiel:
Code:
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[ProduktZutat]') AND type in (N'U'))
ALTER TABLE ProduktZutat DROP CONSTRAINT [ProduktZutat_Produkt]
GO

Viele Grüße,
Tommi
 
Werbung:
Auch immer hilfreich ist es mit BEGIN und END zu arbeiten, sonst ist ja gar nicht klar ob das nächste IF eigenständig ist oder noch Teil der Anweisung nach der vorherigen Bedingung.
Code:
IF
BEGIN
END
ELSE
BEGIN
END
 
Zurück
Oben