如何从C#以编程方式创建MySQL触发器(如果尚未创建)
本文关键字:创建 触发器 如果 MySQL 编程 方式 | 更新日期: 2023-09-27 17:59:10
只有在没有创建触发器的情况下,我才想以编程方式创建触发器。
我无法从C#
以编程方式创建触发器。如果我在MySQL Workbench 6.3中执行与其成功创建的触发器相同的触发器。
我在从C#
执行时收到错误,如下所示。
行错误
cmd。ExecuteNonQuery()。"您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法接近'DELIMITER//CREATE TRIGGER TRIGGER_Lifetouch AFTER INSERT在1"线上的救生垫上
我的代码如下
public void createTrigger()
{
string _query = " DELIMITER // " +
" CREATE "+
" TRIGGER `Trigger_Lifetouch` AFTER INSERT "+
" ON mat.lifetouch "+
" FOR EACH ROW BEGIN "+
" INSERT INTO mat.lifetouchrespirationrate (ByDevSessionId) VALUES(2); "+
" END;" ;
using (MySql.Data.MySqlClient.MySqlConnection con = new MySql.Data.MySqlClient.MySqlConnection(connectionstring))
{
using (var cmd = con.CreateCommand())
{
if (con.State == ConnectionState.Closed || con.State == ConnectionState.Broken)
{
con.Open();
}
int retn = 0;
using (var transaction = con.BeginTransaction(IsolationLevel.ReadCommitted))
{
retn = 0;
cmd.Transaction = transaction;
cmd.CommandText = _query;
try
{
retn = Convert.ToInt32(cmd.ExecuteNonQuery().ToString());
if (retn > 0)
{
logger.Debug(" Trigger Created ");
}
else
{
logger.Debug(" Trigger Not Created ");
}
}
catch (Exception ex)
{
logger.Debug(ex );
}
}
}
}
不能通过MySqlCommand创建触发器。您应该使用(new MySqlScript([ConnectionString],[TriggerScript]))。执行();
这将创建触发器。
尝试在运行时从变量_query中复制值,并将其粘贴到MySql query编辑器中。构造查询时出错。您忘记在末尾添加"DELIMITER;"
尝试并在创建查询时使用@
string _query = @" DELIMITER //
CREATE
TRIGGER `Trigger_Lifetouch` AFTER INSERT
ON mat.lifetouch
FOR EACH ROW BEGIN
INSERT INTO mat.lifetouchrespirationrate (ByDevSessionId) VALUES(2);
END
//;" ;