WEB开发网
开发学院数据库MSSQL Server SQL Server 2005上的CLR和ADO.NET 2.0 阅读

SQL Server 2005上的CLR和ADO.NET 2.0

 2007-05-15 09:28:44 来源:WEB开发网   
核心提示: 笔者认为,在SQL Server 2005平台上,SQL Server 2005上的CLR和ADO.NET 2.0(3),开发人员的思维要具有扩展性,不仅要考虑SQL Server 本身支持的内容,开发CLR 触发器的时候还可以通过SqlContext.TriggerContext获得当前

笔者认为,在SQL Server 2005平台上,开发人员的思维要具有扩展性,不仅要考虑SQL Server 本身支持的内容,还要考虑到Windows平台支持的内容、企业内部SOA其他应用的支持,直至整个Internet环境下的任何可以用资源。

图3:CLR支持后扩展数据对象的资源分布

相对而言,开发User-Function和User-Defined Procedure都是比较容易,这里笔者就开发CLR 触发器作些说明。正如大家所知,Trigger主要包括两类:“DML 触发器”和“DDL 触发器”。DML触发器主要在DELETE、UPDATE、INSERT的时候触发,DDL 触发器则会在CREATE、ALTER、DROP的时候触发。在使用T-SQL编写触发器的时候可以通过INSERTED和DELETED这两个虚表,结合COLUMN_UPDATED()函数完成DML事件的响应。在集成了CLR之后,用.NET语言写触发器可以访问如下内容:

继续访问DELETED和INSERTED这两个虚表;

通过UPDATE操作,判断哪些列受到了修改;

通过访问数据库对象获得DDL的执行语句;

除此而外,开发CLR 触发器的时候还可以通过SqlContext.TriggerContext获得当前操作的上下文,明确究竟是DML的INSERT、UPDATE、DELETE,还是DDL的CREATE、DROP、ALTER操作。

代码示例1:INSERT或DELETE操作的DML触发器写法

SqlConnection connection = new SqlConnection ("context connection = true");
connection.Open();
SqlCommand command = connection.CreateCommand();
command.CommandText = "SELECT * from " + "inserted";

代码实例2:判断哪些列被UPDATE

上一页  1 2 3 4 5  下一页

Tags:SQL Server CLR

编辑录入:coldstar [复制链接] [打 印]
赞助商链接