C# 使用clr触发器转换sql触发器
我是CLR新手,我想将sql server中创建的触发器转换为CLR触发器,因为我正在学习CLR 这是SMO中触发器的当前代码: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
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的一系列文章:(需要免费注册)。