2

delete sql ステートメントによって整合性制約違反が発生します。これは、テーブルの ID が別のテーブルで主キーとして使用されているために発生します。ただし、CASCADE を使用して、とにかくそれらを削除したいと考えています。

しかし、hsqldb の正しい構文は何ですか?

ここに画像の説明を入力

4

3 に答える 3

5

DELETEステートメントは「カスケード」キーワードをサポートしていません (マニュアルに明確に記載されています)

削除をカスケードするには、外部キー制約を設定する必要があります。

create table playlist
(
   id integer primary key not null, 
   ... other columns ...
);

create table playlistmovies
(
   id integer primary key not null,
   playlist_id integer not null,
   ... other columns
);

alter table playlistmovies
   add constraint fk_plm_playlist
   foreign key (playlist_id) references playlist(id)
   on delete cascade;

その後、プレイリストを削除すると、そのプレイリストを参照するすべての行も削除されます。

于 2012-12-10T07:40:15.147 に答える
2

子テーブルの作成中に、以下のように外部キー制約に「On delete cascade」を追加します。

ALTER TABLE ADD [制約] FOREIGN KEY () REFERENCES () ON DELETE CASCADE;

外部キーがテーブル定義で指定されている場合と同じ制約構文を使用して、テーブルに外部キー制約を追加します。

その後、親レコードを削除すると、子レコードも削除されます。

于 2012-12-10T07:42:10.730 に答える