Ich schreibe ein Skript, das einige Zeilen aktualisieren muss, ohne den Inhalt eines anderen Skripts zu ändern, das einige Tabellen erstellt. Eine weitere Bedingung ist, dass Sie Einschränkungen nicht ändern oder löschen können.Wie wird der Primärschlüssel aktualisiert?
Inhalt des Tabellenskript erstellen:
CREATE TABLE TRUCK(
REGNUM VARCHAR(10) NOT NULL,
CAPACITY DECIMAL(7) NOT NULL,
WEIGHT DECIMAL(5) NOT NULL,
STATUS VARCHAR(10) NOT NULL,
CONSTRAINT TRUCK_PKEY PRIMARY KEY(REGNUM),
CONSTRAINT TRUCK_STATUS CHECK (STATUS IN ('AVAILABLE', 'MAINTAINED', 'USED'));
und es gibt einige Aussagen Einfügen einer Zeile.
CREATE TABLE TRIP(
TNUM DECIMAL(10) NOT NULL,
LNUM DECIMAL(8) NOT NULL,
REGNUM VARCHAR(10) NOT NULL,
TRIP_DATE DATE NOT NULL,
CONSTRAINT TRIP_PKEY PRIMARY KEY(TNUM),
CONSTRAINT TRIP_FKEY1 FOREIGN KEY(LNUM) REFERENCES DRIVER(LNUM)
CONSTRAINT TRIP_FKEY2 FOREGIN KEY(REGNUM) REFERENCES TRUCK(REGNUM));
und es gibt auch einige Zeileneinfügeanweisungen.
Dieses Skript wird vom Dozenten erstellt und hat keinen Fehler.
Jetzt habe ich versucht:
UPDATE TRIP
SET REGNUN = 'PKR856'
WHERE REGNUM = 'SST005';
UPDATE TRUCK
SET REGNUN = 'PKR856'
WHERE REGNUM = 'SST005';
und das gibt mir eine Fehlermeldung "nicht/update Eltemzeile löschen foregin Schlüssel constriant..". Alle Zeileneinfügeanweisungen im angegebenen Skript haben vollständige Informationen und es gibt Zeilen mit regnum = sst005. Ich habe versucht, den LKW zuerst zu aktualisieren und es wird auch nicht funktionieren. HILFE BITTE!
prüft die erste Antwort hier: http://stackoverflow.com/questions/2341576/updating- mysql-primary-key –
Die Sache ist, dass Sie keine alter/drop constraint – strongbaby12
haben Sie die zweite Antwort von diesem Beitrag versucht? 'update IGNORE table set primary_field = 'value' ...............' – Jhecht