C# 使用clr触发器转换sql触发器

C# 使用clr触发器转换sql触发器,c#,sql-server,triggers,clr,sqlclr,C#,Sql Server,Triggers,Clr,Sqlclr,我是CLR新手,我想将sql server中创建的触发器转换为CLR触发器,因为我正在学习CLR 这是SMO中触发器的当前代码: CREATE TRIGGER tr_tblAircraft_ForInsert ON tblAircraft FOR INSERT AS BEGIN Declare @ID int Select @ID=AircraftID from inserted Declare @NrOfAircraft int Select @NrOfAir

我是CLR新手,我想将sql server中创建的触发器转换为CLR触发器,因为我正在学习CLR

这是SMO中触发器的当前代码:

CREATE TRIGGER tr_tblAircraft_ForInsert
ON tblAircraft
FOR INSERT
AS 
BEGIN
    Declare @ID int
    Select @ID=AircraftID from inserted
    Declare @NrOfAircraft int
    Select @NrOfAircraft=AircraftUnits from inserted

    Insert into tblAircraftOrderAudit
    values('New aircraft order for ' + Cast(@NrOfAircraft as nvarchar(5)) + ' aircraft with ID = ' + Cast(@ID as nvarchar(5)) + ' was added at ' + Cast(GetDate() as nvarchar(20)))
    END
以下是我在clr代码方面取得的进展:

using System;
using System.Data;
using System.Data.SqlClient;
using Microsoft.SqlServer.Server;

public partial class Triggers
{        
    // Enter existing table or view for the target and uncomment the attribute line
    [SqlTrigger(Name="SqlTriggerAircraftOrderAudit", Target="tblAircraft", Event="FOR INSERT, UPDATE")]
    public static void SqlTriggerAircraftOrderAudit ()
    {
        Int32 ID;
        Int32 NrOfAircraft;
        SqlCommand command;
        SqlTriggerContext triggContext = SqlContext.TriggerContext;
        SqlPipe pipe = SqlContext.Pipe;
        SqlDataReader reader;

        using (SqlConnection connection
            = new SqlConnection(@"context connection=true"))
        {
            connection.Open();
            command = new SqlCommand(@"SELECT * FROM INSERTED;",
               connection);
            reader = command.ExecuteReader();
        reader.Read();
        ID = (Int32)reader[0];
        NrOfAircraft = (Int32)reader[1];
        reader.Close();

        SqlContext.Pipe.Send("Trigger FIRED");
    }
}
}

谢谢

这里面有问题吗?或者你只是在找人来仔细检查你的工作?很抱歉,因为我对CLR触发器知之甚少,上面的CLR代码就是我能做到的程度,因此,如果我想重新创建在SQL server中创建的触发器,我将如何继续执行semin CLR触发器代码?根据这一点以及您最近提出的其他SQLCLR问题,很明显,您目前正在学习.NET和SQL server,这是基于术语、SQL server概念和C#概念方面的错误。您学习这些的顺序是错误的:SQLCLR在SQL Server中使用.NET,因此在继续学习SQLCLR的高级主题之前,您需要更好地掌握C#和T-SQL。当您对这两个方面有了更好的理解后,再看一看我正在写的关于SQLCLR的一系列文章:(需要免费注册)。这里面有问题吗?或者你只是在找人来仔细检查你的工作?很抱歉,因为我对CLR触发器知之甚少,上面的CLR代码就是我能做到的程度,因此,如果我想重新创建在SQL server中创建的触发器,我将如何继续执行semin CLR触发器代码?根据这一点以及您最近提出的其他SQLCLR问题,很明显,您目前正在学习.NET和SQL server,这是基于术语、SQL server概念和C#概念方面的错误。您学习这些的顺序是错误的:SQLCLR在SQL Server中使用.NET,因此在继续学习SQLCLR的高级主题之前,您需要更好地掌握C#和T-SQL。当您对这两个方面有了更好的理解后,再看一看我正在写的关于SQLCLR的一系列文章:(需要免费注册)。