我目前正在学习使用 Go sql 驱动程序(与 MySQL)与数据库对话,我想插入一个触发器,当新记录插入表中时该触发器将被激活。
我知道要在纯 SQL 中执行此操作,语句需要如下所示:
CREATE TRIGGER ins_sum BEFORE INSERT ON table_1
FOR EACH ROW SET @sum = @sum + new.amount
但我不确定这会返回什么,所以不知道如何构建 go/sql 查询。
谢谢!
最佳答案
如果创建触发器成功,您将获得 nil
作为 db.Exec 的第二个返回值另一方面,如果查询失败,您将收到一条错误消息,其中包含原因的详细信息。
例如:
_, err := db.Exec(`CREATE TRIGGER ins_sum BEFORE INSERT ON table_1 FOR EACH ROW SET @sum = @sum + new.amount`)
if err != nil {
fmt.Println(err)
}
// Output: none
假设您第二次运行相同的查询
_, err := db.Exec(`CREATE TRIGGER ins_sum BEFORE INSERT ON table_1 FOR EACH ROW SET @sum = @sum + new.amount`)
if err != nil {
fmt.Println(err)
}
// Output: Error 1359: Trigger already exists
或者假设您输入了错误的表名
_, err := db.Exec(`CREATE TRIGGER ins_sum BEFORE INSERT ON table_987 FOR EACH ROW SET @sum = @sum + new.amount`)
if err != nil {
fmt.Println(err)
}
// Output: Error 1146: Table 'dbname.table_987' doesn't exist
关于mysql - 在 GoSQL 中处理数据库触发器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100038/