このトリガーを作成しましたが、機能しません。次のエラーが表示されます。
11:24:11 CREATE TRIGGER check_venduti AFTER INSERT ON venduti FOR EACH ROW BEGIN SELECT count(*) AS num_rows FROM prodotto WHERE cod_prodotto=NEW.cod_prodotto if numrows < 0 then SIGNAL "error" end エラー コード: 1064。エラーが発生しました。 SQL 構文で; MySQL サーバーのバージョンに対応するマニュアルで、6 行目の 0.000 秒付近の「if numrows < 0 then SIGNAL "error" end」を使用する正しい構文を確認してください。
これらは私のテーブルです:
CREATE TABLE clienti (cod_cliente integer(4) auto_increment,nome varchar(100),cognome varchar(100),primary key(cod_cliente))Engine=InnoDB;
CREATE TABLE prodotto(cod_prodotto integer(4) auto_increment,descrizione varchar(100),qnt integer(4),primary key(cod_prodotto))Engine=InnoDB;
CREATE TABLE venduti (cod_vendita integer(4) auto_increment,cod_cliente integer(4) REFERENCES clienti(cod_cliente),cod_prodotto integer(4)
関連情報 prodotto(cod_prodotto),主キー(cod_vendita))Engine=InnoDB;
これが私のトリガーです:
delimiter |
CREATE TRIGGER check_venduti
BEFORE INSERT ON venduti
FOR EACH ROW
BEGIN
SELECT count(*) AS num_rows FROM prodotto WHERE cod_prodotto=NEW.cod_prodotto
if num_rows == 0 then
SIGNAL "error"
end;
END;
|
今、あなたの答えに従って、このモードでコードを編集しました:
delimiter |
CREATE TRIGGER check_venduti
BEFORE INSERT ON venduti
FOR EACH ROW
BEGIN
DECLARE num_rows INT;
SELECT count(*) INTO num_rows FROM prodotto WHERE cod_prodotto=NEW.cod_prodotto;
if num_rows==0 then
SIGNAL "error"
end;
END;
|
しかし、私は同じエラーを受け取ります: