只有在没有创建的情况下,我才希望以编程方式创建触发器。
我无法以编程方式从C#创建触发器。如果我要从MySQL Workbench 6.3执行与其成功创建触发器相同的触发器。
我在从C#执行时收到错误,如下所示。
直线误差 cmd.ExecuteNonQuery()。“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行插入mat.lifetou后使用接近‘划界器//创建触发器Trigger_Lifetouch’的正确语法。”
我的代码如下
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 );
}
}
}
}发布于 2015-06-23 10:01:09
尝试在运行时从变量_query复制值,并将其粘贴到MySql查询编辑器。当您构造查询时,这是一个错误。你忘了在“划界器”后面加上;
发布于 2016-03-02 14:18:58
不能通过MySqlCommand来创建触发器。您应该使用(new MySqlScript(ConnectionString,TriggerScript)).Execute();
这将创建触发器。
发布于 2017-09-08 01:24:53
尝试并使用@创建查询
string _query = @" DELIMITER //
CREATE
TRIGGER `Trigger_Lifetouch` AFTER INSERT
ON mat.lifetouch
FOR EACH ROW BEGIN
INSERT INTO mat.lifetouchrespirationrate (ByDevSessionId) VALUES(2);
END
//;" ;https://stackoverflow.com/questions/30981025
复制相似问题