-2
関数を使用してgeneroテーブルのジャンルを削除する必要があります。しかし、私は関数を作成し、 "DELETから選択*" を実行し、メッセージを表示する場合:"genero"テーブルの更新または削除は、 "filme"テーブルの外部キー制約 "fk_genero_filme"に違反します
ERROR: update or delete on table "genero" violates foreign key constraint "fk_genero_filme" on table "filme"
DETAIL: Key (id) = (1) is still referenced from table "movie".
私のテーブル構造:
create table genero(
id numeric(5) not null,
nome varchar(100),
constraint genero_pkey primary key (id)
);
create table filme(
id numeric(5) not null,
nome varchar(100),
duracao varchar(100),
sinopse varchar(2000),
genero numeric(5),
data timestamp,
constraint pk_genero primary key (id),
constraint fk_genero_filme foreign key (genero) references genero (id)
);
削除機能:
CREATE OR REPLACE FUNCTION delet (id numeric(5))
RETURNS VOID AS
$$
BEGIN
DELETE FROM genero;
END;
$$
LANGUAGE 'plpgsql' VOLATILE COST 100;
関数呼び出し:
Select delet(6);
データベースの構造、データの例、完全なSQLクエリを表示してください。また、コードの書式を使用してください。 –
create table genero( id数値(5)not null、nome varchar(100)、 制約genero_pkey主キー(id) ) VARCHAR(100)duracao、 sinopseのVARCHAR(2000)、generoの数値(5)、データのタイムスタンプ、主キー(ID)pk_genero 制約、外部キー(genero)参照genero(ID) )fk_genero_filme 制約は、CREATE OR REPLACE (6);選択を削除(6);選択を削除(6); FUNCTION削除(ID数値(5))$$ からBEGIN を削除する;終了; $$ LANGUAGE 'plpgsql' VOLATILE COST 100; –