首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如果尚未创建,如何从MySQL中以编程方式创建C#触发器?

问如果尚未创建,如何从MySQL中以编程方式创建C#触发器?
EN

Stack Overflow用户
提问于 2015-06-22 13:19:37
回答 3查看 2.7K关注 0票数 1

只有在没有创建的情况下,我才希望以编程方式创建触发器。

我无法以编程方式从C#创建触发器。如果我要从MySQL Workbench 6.3执行与其成功创建触发器相同的触发器。

我在从C#执行时收到错误,如下所示。

直线误差 cmd.ExecuteNonQuery()。“您的SQL语法有错误;请检查与您的MySQL服务器版本对应的手册,以便在第1行插入mat.lifetou后使用接近‘划界器//创建触发器Trigger_Lifetouch’的正确语法。”

我的代码如下

代码语言:javascript
复制
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 );
                        }

                    }
                }
            }
EN

回答 3

Stack Overflow用户

发布于 2015-06-23 10:01:09

尝试在运行时从变量_query复制值,并将其粘贴到MySql查询编辑器。当您构造查询时,这是一个错误。你忘了在“划界器”后面加上;

票数 0
EN

Stack Overflow用户

发布于 2016-03-02 14:18:58

不能通过MySqlCommand来创建触发器。您应该使用(new MySqlScript(ConnectionString,TriggerScript)).Execute();

这将创建触发器。

票数 0
EN

Stack Overflow用户

发布于 2017-09-08 01:24:53

尝试并使用@创建查询

代码语言:javascript
复制
string _query = @" DELIMITER //
                   CREATE
                   TRIGGER `Trigger_Lifetouch`  AFTER INSERT
                   ON mat.lifetouch
                   FOR EACH ROW BEGIN
                   INSERT INTO mat.lifetouchrespirationrate (ByDevSessionId) VALUES(2);       
                   END
                   //;" ;
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30981025

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档