这是我第一次在MySQL上使用触发器。
我有两个不同的表('users'和'prova'),每当'users'表中有新行时,我想在'prova'中插入一个新行。
创建触发器
inserisciemail
在users
之后插入每个行 BEGIN
INSERT INTO prova(provaemail)
VALUES(NEW.email);
END
字段'provaemail'结果为空,只有id字段被填充(自动增量)。 怎么了?
维托
答案 0 :(得分:1)
我正在这里讨论,因为SO建议避免在评论中进行扩展讨论。
所以,谢谢你的SQL,但我担心他们没有包含“prova”的CREATE TABLE和在“users”表上运行的INSERT语句。
无论如何,我在我的开发环境中创建了“users”表和触发器。然后我创建了我自己的“prova”表版本,如下所示:
CREATE TABLE `prova` (
`provaemail` VARCHAR(40)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
然后运行以下插入语句:
INSERT INTO `users` (`id`, `email`) VALUES (1, 'guptaabhay@gmail.com');
在“prova”插入了一个新条目,这里:
mysql> select * from prova;
+----------------------+
| provaemail |
+----------------------+
| guptaabhay@gmail.com |
+----------------------+
1 row in set (0.00 sec)
所以触发器工作了!
如果您可以共享“prova”和INSERT INTO users
查询的架构,那么我们可以进一步研究。我确定有些不对劲。
编辑1
感谢INSERT。它们运行良好,“prova”表现在有以下条目:
mysql> select * from prova;
+-----------------------+
| provaemail |
+-----------------------+
| genoveffa@dominio.it |
| peto@dominio.it |
| test@dominio.it |
| gianni@dominio.it |
| nuovissimo@dominio.it |
| new@dominio.it |
| vit@dominio.it |
+-----------------------+
8 rows in set (0.00 sec)
到目前为止还没什么奇怪的!为什么不在最后一次尝试这些步骤:
SELECT * FROM prova;
让我知道你看到的一切?