这只是一个简短的问题,毫无疑问,外面的人会知道答案的.

我需要能够在一个触发器内进行多次插入/更新.每一次try 都以失败告终:(

DROP TRIGGER IF EXISTS `Insert_Article`//
CREATE TRIGGER `Insert_Article` AFTER INSERT ON `Article`
 FOR EACH ROW insert into FullTextStore (`Table`, `PrimaryKey`, `ColumnName`, `Data`, `Created`) values ('Article', NEW.ArticleID, 'Description', NEW.Description, UNIX_TIMESTAMP())
//

目前,上面的代码只是在插入父表时将一行插入到表中.这个不错.

为了让它适用于多种价值观,我需要做

DROP TRIGGER IF EXISTS `Insert_Article`//
CREATE TRIGGER `Insert_Article` AFTER INSERT ON `Article`
 FOR EACH ROW insert into FullTextStore (`Table`, `PrimaryKey`, `ColumnName`, `Data`, `Created`)
select 'Article', NEW.ArticleID, 'Description', NEW.Description, UNIX_TIMESTAMP()
union
select 'Article', NEW.ArticleID, 'Keywords', NEW.Keywords, UNIX_TIMESTAMP()
//

但是一定有更简单的方法吗?当我try 使用;要终止每一条语句,它会以

1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL version for the right syntax to use near 'select 'Article', NEW.ArticleID, 'Keywords', 'NEW.Keywords, UNIX_TIMESTAMP())' at line 1

我甚至不能让多个UPDATE语句工作.

如果有人能指出我做错了什么,那将是一个很大的帮助?

干杯

加文

推荐答案

doctor :Create Trigger Syntax

Trigger_stmt是要执行的语句 在触发器激活时执行.如果 您想要执行多个 语句,请使用BEGIN.结束 复合语句构造.这 还使您可以使用相同的 内允许的语句 存储的 routine

CREATE TRIGGER testref BEFORE INSERT ON test1
  FOR EACH ROW BEGIN
    INSERT INTO test2 SET a2 = NEW.a1;
    DELETE FROM test3 WHERE a3 = NEW.a1;
    UPDATE test4 SET b4 = b4 + 1 WHERE a4 = NEW.a1;
  END;

Database相关问答推荐

如何在华为Appcube中创建和使用对象(模型)?

Mongodb聚合$group,限制数组长度

优雅地处理 EJB/JPA 环境中的约束冲突?

如何开始使用 SQLCipher for android?

使用 Laravel 5.2 从存储在 Y-m-d 数据库中的日期计算年龄

存储所有排列的模式数据库

如何设计 SaaS 数据库?

寻找基于磁盘的类 redis 数据库

NoSql DB 和 OO Db 有什么区别?

ORM vs 传统数据库查询,它们的字段是什么?

The method setListAdapter(ArrayAdapter) is undefined for the type create

SQL Server 2008 中的 Open Table go 了哪里?

如何在磁盘上布局 B-Tree 数据?

寻找示例数据库设计的好方法

什么是数据库中的死锁?

如何在我的 SQL Server 代理作业(job)中创建一个将运行我的 SSIS 包的步骤?

Django + PostgreSQL:如何重置主键?

最佳用户角色权限数据库设计实践?

您是否应该将自引用表列设为外键?

从 SQLite 导出到 SQL Server