[英]Triggers mysql sql
Whats wrong with this code? 此代码有什么问题?
CREATE TRIGGER User_trigger AFTER DELETE ON users
FOR EACH ROW
BEGIN
INSERT INTO del_users ('fullname') VALUES ('fullname');
END;
Please help. 请帮忙。
There are several issues: 有几个问题:
BEGIN ... END
block you have to change DELIMITER
. BEGIN ... END
块,则必须更改DELIMITER
。 On the other hand if your trigger contains only one statement just don't use BEGIN ... END
. BEGIN ... END
。 Take a closer look at Defining Stored Programs OLD
keyword. OLD
关键字。 Take a closer look at Trigger Syntax and Examples That being said and assuming that your simplified table schema look something like this 话虽如此,并假设您的简化表架构看起来像这样
CREATE TABLE users
(
id int not null auto_increment primary key,
fullname varchar(8)
);
CREATE TABLE del_users
(
id int not null auto_increment primary key,
user_id int, fullname varchar(32),
deleted datetime
);
Your trigger would look 您的触发器看起来
CREATE TRIGGER tg_ad_users
AFTER DELETE ON users
FOR EACH ROW
INSERT INTO del_users (user_id, fullname, deleted)
VALUES (OLD.id, OLD.fullname, NOW());
Here is SQLFiddle demo 这是SQLFiddle演示
or with BEGIN ... END
block 或使用
BEGIN ... END
块
DELIMITER //
CREATE TRIGGER tg_ad_users
AFTER DELETE ON users
FOR EACH ROW
BEGIN
INSERT INTO del_users (user_id, fullname, deleted)
VALUES (OLD.id, OLD.fullname, NOW());
END//
DELIMITER ;
Try the following: 请尝试以下操作:
CREATE TRIGGER User_trigger AFTER DELETE
ON users
AS
INSERT INTO del_users (fullname)
SELECT d.fullname from Deleted d
Here is information on using the DELETED and INSERTED Tables: 这是有关使用DELETED和INSERTED表的信息:
http://technet.microsoft.com/en-us/library/ms191300.aspx http://technet.microsoft.com/en-us/library/ms191300.aspx
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.