定义字符串变量,把触发器程序写入变量中,然后用 execute 变量名 来执行.

解决方案 »

  1.   

    还是不行啊.我按你的办法加了进去,代码如下:
    using System;
    using System.Data;
    using System.Data.SqlClient;
    using Microsoft.SqlServer.Server;namespace liuminnj
    {
        public partial class Triggers
       {
            // 为目标输入现有表或视图并取消对属性行的注释
            // [Microsoft.SqlServer.Server.SqlTrigger 
            //(Name="Trigger1", Target="dbo.XS&dbo.KC&dbo.XS_KC", Event="FOR insert")]
            //info("版本号=触发器v1.0","创建者=刘敏","时间=2008-5-26","目标=三个表之间的数据一致性")
            //定义命令字符串
            String liumin = " SELECT * FROM inserted a "+
                "WHERE a.学号 NOT IN (SELECT b.学号 FROM XS b) OR a.课程号 NOT IN (SELECT c.课程号 FROM KC c)"+
                "BEGIN"+"RAISERROR ('违背数据的一致性.', 16, 1)"+"ROLLBACK TRANSACTION"+"END";
            public static void Trigger1()
           {
                // 用您的代码替换
                //传递行为参数并创建触发器上下文类的实例;
                SqlTriggerContext liuTriggerContext = SqlContext.TriggerContext;
                //定义SqlPipe 类的实例,用来返回结果集;
                SqlPipe liuPipe = SqlContext.Pipe;
                //初始化SqlCommand类的新实例;
                SqlCommand liuCommand = new SqlCommand();
                //
                
                if (liuTriggerContext.TriggerAction == TriggerAction.Insert)
                {
                    liuCommand.CommandText = "exec liumin";            }
                SqlContext.Pipe.Send("触发器已经完成任务!");
             
        }
    }}
    根本就不行