【发布时间】:2013-05-20 19:59:02
【问题描述】:
我写了这个触发器,但它不起作用,我收到这个错误:
11:24:11 在 venduti 上插入后创建触发器 check_venduti FOR EACH ROW BEGIN SELECT count(*) AS num_rows FROM prodotto WHERE cod_prodotto=NEW.cod_prodotto if numrows
这些是我的桌子:
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)
REFERENCES 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;
|
但我收到同样的错误:
【问题讨论】:
-
1.你想要什么? 2. 怎么不行?它是否显示错误?它是否显示错误的结果?
-
num_rows 然后是 numrows
-
我改正了,但还是不行。