mySQL中特定字段更新时触发
我正在尝试复制数据库中的用户名字段。具体来说,我希望在不同的表中添加/删除用户名,只要在UserDatabase中添加包含用户名的行。为此,我考虑使用触发机制 我的思路是:mySQL中特定字段更新时触发,mysql,triggers,Mysql,Triggers,我正在尝试复制数据库中的用户名字段。具体来说,我希望在不同的表中添加/删除用户名,只要在UserDatabase中添加包含用户名的行。为此,我考虑使用触发机制 我的思路是: CREATE TRIGGER 'addUsername' AFTER INSERT ON UserDatabase FOR EACH ROW IF (UPDATE(Username)) BEGIN INSERT INTO anothertable (Username) VALUES
CREATE TRIGGER 'addUsername' AFTER INSERT ON UserDatabase FOR EACH ROW
IF (UPDATE(Username))
BEGIN
INSERT INTO anothertable (Username) VALUES ('NewUser');
END
我的问题是,如何从UserDatabase捕获更新的用户名并将其复制到NewUser?还有,有没有办法删除每一行,因为我只希望循环运行一次
谢谢 来自:
在触发器主体中,您可以使用别名OLD和NEW引用主题表中的列以及与触发器关联的表。OLD.col_name是指更新或删除现有行之前的列。NEW.col_name是指要插入的新行或更新后的现有行的列
不,你不能删除每一行,我想你误解了一点。实际上没有循环。for each row引用insert或update语句中的多行。当您使用一条insert语句添加多个用户时,您希望复制所有用户,对吗?不止一个
然后你应该注意,单引号和反勾号之间有区别。如果列或表名或任何内容包含不应该存在的字符(如空格),或者名称实际上是保留关键字,则应使用反勾号。单引号,就像你在触发器名称中使用的那样,用来告诉MySQL它是一个字符串
您的触发器应该如下所示:
CREATE TRIGGER 'addUsername' AFTER INSERT ON UserDatabase
FOR EACH ROW
INSERT INTO anothertable (Username) VALUES (NEW.Username);
对于update语句,必须创建另一个触发器