create or replace trigger
时间: 2023-04-30 16:01:51 浏览: 169
create or replace trigger是一个SQL语句,用于创建或替换触发器。触发器是一种数据库对象,可以在特定的数据库事件发生时自动执行一些操作。使用create or replace trigger语句可以创建新的触发器,也可以替换已有的触发器。
相关问题
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` 表中的数据。
如果您仍然遇到问题,请提供更详细的信息,以便我更好地帮助您解决问题。
create or replace trigger use_table after insert on open_table for each row declare PRAGMA AUTONOMOUS_TRANSACTION; begin update desk set state = '占用中' where desk_number = :new.desk_number; commit; end; /
根据您提供的代码,这是一个 Oracle 数据库的触发器,它的作用是在 `open_table` 表中插入新数据后,自动将 `desk` 表中对应的 `desk_number` 的 `state` 字段更新为 `'占用中'`。
您的问题是 "发生了变化,触发器不能读它",这句话比较模糊,不太清楚您的具体意思。如果您能提供更多的上下文或信息,我会尽力帮助您解决问题。
阅读全文