“NEW”触发不起作用

时间:2012-01-09 15:54:27

标签: mysql

这是我第一次在MySQL上使用触发器。

我有两个不同的表('users'和'prova'),每当'users'表中有新行时,我想在'prova'中插入一个新行。

  

创建触发器inserisciemail
      在users之后插入每个行       BEGIN
          INSERT INTO prova(provaemail)
          VALUES(NEW.email);
      END

字段'provaemail'结果为空,只有id字段被填充(自动增量)。 怎么了?

维托

1 个答案:

答案 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)

到目前为止还没什么奇怪的!为什么不在最后一次尝试这些步骤:

  1. 创建“用户”表格
  2. 创建触发器
  3. 创建“prova”表(使用我上面给出的CREATE语句)
  4. 触发http://pastie.org/3166828
  5. 上给出的插入内容
  6. 执行SELECT * FROM prova;
  7. 让我知道你看到的一切?