私はいくつかのテーブルを作成する別のスクリプトの内容を変更せずにいくつかの行を更新する必要があるスクリプトを書いています。もう1つの条件は、制約を変更または削除できないことです。テーブル・スクリプトを作成する主キーを更新するには?
内容:
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'));
といくつかの行の挿入文があります。
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));
また、一部の行挿入文もあります。
このスクリプトは講師によって提供され、エラーはありません。
今、私が試した:
UPDATE TRIP
SET REGNUN = 'PKR856'
WHERE REGNUM = 'SST005';
UPDATE TRUCK
SET REGNUN = 'PKR856'
WHERE REGNUM = 'SST005';
、これは "/更新親行foreginキーconstriant削除することはできません。。" 私にエラーを与えるだろう。指定されたスクリプト内のすべての行挿入文には完全な情報があり、regnum = sst005の行があります。私はトラックを最初に更新しようとしましたが、どちらもうまくいかないでしょう。助けてください! MySQLのforeign keyについて
ここで最初の答えをチェック:http://stackoverflow.com/questions/2341576/updating-をmysql-primary-key –
問題は、あなたがalter/dropの制約を使うことができないということです。 – strongbaby12
その投稿から2番目の答えを試しましたか? 'update IGNORE table set primary_field = 'value' ...............' – Jhecht