gpt4 book ai didi

mysql - 在 GoSQL 中处理数据库触发器

转载 作者:IT王子 更新时间:2023-10-29 02:21:32 29 4
gpt4 key购买 nike

我目前正在学习使用 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com