在mysql中创建触发器我需要一些帮助: 我有一个名为“country”的列,另一个名为“tag”。
每当有人插入城市“洛杉矶”时,我希望我的触发器在“标签”栏中插入文本“来自加利福尼亚”。
编辑:
delimiter //
CREATE TRIGGER update_tag AFTER UPDATE ON users
FOR EACH ROW
BEGIN
IF (city = 'Los Angeles') THEN
INSERT INTO users(tag) VALUES (California);
END IF;
END;//
delimiter ;
这似乎是在没有错误的情况下执行的,但是没有在" tag"中插入任何内容。柱, 任何想法为什么?
PS。我赞赏那些用" - "评价这篇文章的人。给我写一个PM并告诉我我做错了什么:)。谢谢。
答案 0 :(得分:2)
您不能使用insert语句来更新当前正在处理的行。您应该使用SET NEW.cxy = ""
语法。
我为你准备了a working sqlfiddle,希望能表明你想要实现的目标。
CREATE TABLE users (
id int auto_increment PRIMARY KEY,
`city` varchar(255),
`tag` varchar(255)
)//
CREATE TRIGGER update_tag BEFORE UPDATE ON users
FOR EACH ROW
BEGIN
IF (NEW.city = 'Los Angeles') THEN
SET NEW.tag = "California";
END IF;
END//
INSERT INTO users VALUES (1, 'test', '')//
UPDATE users SET `city` = 'Los Angeles'//
请注意,这也是BEFORE UPDATE
触发器,因此您的更改也会保存。
如果有人发出SELECT * FROM users
,则会收到一行
1 Los Angeles California
还有a page in the MySQL manual包含触发器示例。你应该仔细阅读。