Exemple #1
0
        public PerformDBOperationExpression CreateTriggerExpression(string tableName, string triggerName, bool onBefore, TriggerEvent onEvent, string triggerBody)
        {
            tableName   = truncator.Truncate(tableName);
            triggerName = truncator.Truncate(triggerName);
            CheckTable(tableName);
            LockTable(tableName);
            PerformDBOperationExpression createTrigger = new PerformDBOperationExpression();

            createTrigger.Operation = (connection, transaction) =>
            {
                string triggerSql = String.Format(@"CREATE TRIGGER {0} FOR {1} ACTIVE {2} {3} POSITION 0 
                    {4}
                    ", quoter.Quote(triggerName), quoter.Quote(tableName),
                                                  onBefore ? "before" : "after",
                                                  onEvent.ToString().ToLower(),
                                                  triggerBody
                                                  );
                Announcer.Sql(triggerSql);
                using (var cmd = Factory.CreateCommand(triggerSql, connection, transaction))
                {
                    cmd.CommandTimeout = Options.Timeout;
                    cmd.ExecuteNonQuery();
                }
            };
            return(createTrigger);
        }