2012-03-27 7 views
1

Ich versuche, einen zusammengesetzten Schlüssel für MYSQL zu erstellen, aber ich weiß nicht, wie, ich versuchte folgendes;SQL zusammengesetzte Schlüsselsyntax

CREATE TABLE order_line(
order_id int NOT NULL AUTO_INCREMENT, 
car_id int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY (order_id, car_id)); 

ALTER TABLE order_line ADD CONSTRAINT order_line_FK FOREIGN KEY (order_id) REFERENCES orders (order_id); 
ALTER TABLE order_line ADD CONSTRAINT order_line_FK2 FOREIGN KEY (car_id) REFERENCES car (car_id); 
+0

warum 'Sie den Fremdschlüssel auto_increment'?!? –

Antwort

0

Okay, ich konnte es tun, wie;

CREATE TABLE order_line (
order_id int NOT NULL, 
car_id int NOT NULL); 

ALTER TABLE order_line ADD CONSTRAINT order_line_PK PRIMARY KEY (order_id, car_id); 
ALTER TABLE order_line ADD CONSTRAINT order_line_FK FOREIGN KEY (order_id) REFERENCES orders (order_id); 
ALTER TABLE order_line ADD CONSTRAINT order_line_FK2 FOREIGN KEY (car_id) REFERENCES car (car_id); 
2

Sie können nicht autoincremened Schlüssel haben. Sehen Sie dieses Beispiel von Ihnen macht keinen Sinn, auf dem Schlüssel sagen Sie, dass order_id Bestellungen (order_id) verweist, das ist in Ordnung, aber auf der Tabelle Sie sagen, dass der gleiche Wert Auto-Inkrement ist, was bedeutet, dass es sein wird generiert von der Datenbank.

entfernen beide AUTO_INCREMENT von Ihrem order_line Tisch und Sie sollten

Ordnung sein, wenn Sie möchten, eine AUTO_INCREMENT order_line_id Feld auf Ihrer order_line Tabelle als Primärschlüssel haben kann (was ich empfehlen)

1

In MySQL Sie kann nur eine AUTO_INCREMENT-Spalte haben, sodass Sie keinen zusammengesetzten Schlüssel als AUTO_INCREMENT definieren können. Haben Sie versucht, nur

CREATE TABLE order_line(
    order_id int NOT NULL, 
    car_id int NOT NULL, 
PRIMARY KEY (order_id, car_id)); 
0

CONSTRAINT composite_key_name PRIMARY KEY (col1,col2)

Verwandte Themen