mysql 触发器 new.id是哪个表的
时间: 2024-04-28 19:21:33 浏览: 101
在MySQL的触发器中,`NEW`是一个关键字,指代正在被插入、更新或删除的行。`NEW.id`中的`id`是指代正在被插入、更新或删除的行中的`id`字段,具体是哪个表的`id`字段取决于触发器是在哪个表上定义的。
例如,如果你在名为`users`的表上定义了一个触发器,在触发器中引用`NEW.id`时,它就指代`users`表中正在被插入、更新或删除的行的`id`字段。如果你在名为`orders`的表上定义了一个触发器,在触发器中引用`NEW.id`时,它就指代`orders`表中正在被插入、更新或删除的行的`id`字段。
相关问题
mysql触发器 a表插入数据同时 b表更新当前数据_MySQL触发器初试:当A表插入新记录,自动在B表中插入相同ID的记录...
可以通过MySQL触发器实现当A表插入新记录时,自动在B表中插入相同ID的记录。下面是一个实现的示例代码:
```
CREATE TRIGGER trig_insert_b
AFTER INSERT
ON A
FOR EACH ROW
BEGIN
INSERT INTO B (id, col1, col2)
VALUES (NEW.id, NEW.col1, NEW.col2);
END;
```
在上面的代码中,我们创建了一个名为`trig_insert_b`的触发器,并将其绑定到A表的`AFTER INSERT`事件上。每当A表插入新记录时,该触发器都会被触发。在触发器中,我们将B表中插入与A表相同ID的记录,同时将A表中的col1和col2列的值插入到B表的对应列中。
请注意,以上代码仅作为示例,实际的表结构和列名可能会有所不同,需要根据实际情况进行修改。
mysql触发器这段代码哪里错了create or REPLACE TRIGGER setcomment_tr AFTER INSERT on setcomment for each ROW BEGIN UPDATE videoset SET commentnum = commentnum + 1 where videoset.setid = NEW.setid; end;
根据您提供的代码,我看不出明显的错误,但是可能是因为您在 `create or REPLACE TRIGGER` 语句中使用了 `REPLACE` 关键字,而 MySQL 5.6 不支持 `REPLACE TRIGGER` 语法。因此,可以将 `REPLACE` 关键字删除,使用如下语法:
```sql
CREATE TRIGGER setcomment_tr AFTER INSERT ON setcomment FOR EACH ROW
BEGIN
UPDATE videoset SET commentnum = commentnum + 1 WHERE videoset.setid = NEW.setid;
END;
```
这将创建一个名为 `setcomment_tr` 的触发器,在每次向 `setcomment` 表插入新的一行时,将会自动执行 `UPDATE` 语句,更新 `videoset` 表中与新增行相关的记录的 `commentnum` 字段。
请确保数据库中已经存在 `videoset` 表和 `setcomment` 表,并且 `videoset` 表中有一个名为 `setid` 的字段,用于关联 `setcomment` 表中的数据。
如果您仍然遇到问题,请提供更详细的信息,以便我更好地帮助您解决问题。
阅读全文