delete sql ステートメントによって整合性制約違反が発生します。これは、テーブルの ID が別のテーブルで主キーとして使用されているために発生します。ただし、CASCADE を使用して、とにかくそれらを削除したいと考えています。
しかし、hsqldb の正しい構文は何ですか?
delete sql ステートメントによって整合性制約違反が発生します。これは、テーブルの ID が別のテーブルで主キーとして使用されているために発生します。ただし、CASCADE を使用して、とにかくそれらを削除したいと考えています。
しかし、hsqldb の正しい構文は何ですか?
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;
その後、プレイリストを削除すると、そのプレイリストを参照するすべての行も削除されます。
子テーブルの作成中に、以下のように外部キー制約に「On delete cascade」を追加します。
ALTER TABLE ADD [制約] FOREIGN KEY () REFERENCES () ON DELETE CASCADE;
外部キーがテーブル定義で指定されている場合と同じ制約構文を使用して、テーブルに外部キー制約を追加します。
その後、親レコードを削除すると、子レコードも削除されます。