2014-07-06 85 views
0

我有一个名为daire的表,它具有名为Kiraci,D_ID,Sahip的列。 D_ID是PK列。我想要的是当我改变Kiraci值时,我想触发删除一行或插入一个新行到另一个表。我试图创建一个像书面底部的触发器:创建触发器语法错误

CREATE TRIGGER daireBosalt AFTER UPDATE ON daire 
FOR EACH ROW 
BEGIN 
    IF NEW.Kiraci IS NULL THEN 
    DELETE FROM kontrat WHERE kontrat.D_ID = NEW.D_id; 
ELSEIF NEW.Kiraci IS NOT NULL THEN 
    INSERT INTO kontrat (D_ID, BAy, BGun, BYil, Tutar, Sahip, Sure, Depo, Komisyon) VALUES (NEW.D_id, '01', '01','2014','100', NEW.Sahip,'1','100','100') 
END IF; 
END; 

当我尝试创建此脚本,它不断给我语法错误。

+0

你改变分隔符?即'DELIMITER \\'在语句前面,用'\\'结束创建,并用'DELIMITER'重置分隔符;' – VMai

+0

您在INSERT后缺少分号。 – VMai

+0

omg yes right thnx :) – user3809204

回答

1

更改分隔符,而你创建触发器:

delimiter $$ 
CREATE TRIGGER daireBosalt AFTER UPDATE ON daire 
FOR EACH ROW 
BEGIN 
    IF NEW.Kiraci IS NULL THEN 
    DELETE FROM kontrat WHERE kontrat.D_ID = NEW.D_id; 
ELSEIF NEW.Kiraci IS NOT NULL THEN 
    INSERT INTO kontrat (D_ID, BAy, BGun, BYil, Tutar, Sahip, Sure, Depo, Komisyon) VALUES (NEW.D_id, '01', '01','2014','100', NEW.Sahip,'1','100','100') 
END IF; 
END $$ 

delimiter ; 
+0

我已经使用分隔符标签它仍然给我语法错误 – user3809204

+0

您发布的代码不会正确更改分隔符。如果您有语法错误消息,则应该将其完整发布。 –

+0

1查询执行,0成功,1个错误,0警告 查询:CREATE TRIGGER daireBosalt UPDATE ON daire FOR EACH ROW之后开始IF NEW.Kiraci为null,则DELETE FROM kontrat WHERE kontrat ... 错误代码:1064 你的SQL语法有错误;检查与您的MySQL服务器版本相对应的手册,以在'END IF'附近使用正确的语法; END”在8号线 执行时间:0秒 转换时间:0秒 总时间:0.022秒 这是错误我得到 – user3809204