0
データベースがテストデータで汚染されていて、一部の行をクリーンアップしたい。 削除しようとすると、外部キー制約が失敗するというメッセージが表示されます。 可能であれば、私は(CASCADE ON追加)テーブル構造を変更しないようにしたいテーブル構造を変更せずにカスケードを削除する
私はこのような何か試してみました:副選択は、複数返すことが許されていないため、
DELETE from transactions WHERE itemID = (SELECT itemID from items WHERE price=0);
DELETE from items WHERE price=0;
をしかし、これは動作しません。行。 (ループのない答えも高く評価され;)私はループして、いくつかの魔法を行うことが可能であると仮定し、私はそれらを使用してゼロ経験を持っている)
スキーマ:
CREATE TABLE items (itemID int, price int, description varchar(30), PRIMARY KEY(itemID));
CREATE TABLE transactions (transactionID int, itemID int, PRIMARY KEY (transactionID) , FOREIGN KEY (itemID) REFERENCES items(itemID));
INSERT INTO items VALUES (1, 0, "TEST");
INSERT INTO items VALUES (2, 0, "TEST2");
INSERT INTO transactions VALUES (1, 2);
INSERT INTO transactions VALUES (2, 2);
INSERT INTO transactions VALUES (3, 1);
感謝。それは私が期待したよりも簡単だった:) – abinmorth