在Sql Server 2005中更改触发器

时间:2008-11-05 15:30:40

标签: sql-server sql-server-2005 triggers tableadapter alter

我需要更改sql server 2005中的触发器,我想使用表适配器和sql语句,而不是存储过程。我知道我可以在查询浏览器中运行它并执行它但我需要将它部署到多个数据库并在更新中使用表适配器。这可能吗?

执行添加查询 - >更新 - >粘贴以下代码 - >查询构建器以查看它是否解析

print("USE [DataBaseName]
GO
/****** Object:  Trigger [dbo].[UpdateCurrentAddress]    Script Date: 10/30/2008 14:47:15 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER TRIGGER [dbo].[UpdateCurrentAddress] ON [dbo].[PreviousAddresses] 
FOR INSERT, UPDATE, DELETE
AS
-- Check to see if there was an insert/update or a deletion.
IF (SELECT COUNT(*) FROM inserted) >= 1
BEGIN
    IF (SELECT CountryID FROM inserted) <> 181

...moar...");

...误 不支持USE [DataBaseName] SQL构造或语句。

如果我删除顶部并从ALTER TRIGGER开始

不支持ALTER TRIGGER SQL构造或语句。

我还是比较陌生,如果没有存储过程,我要么以错误的方式处理这个问题,也不会感到惊讶。

编辑:是的,我在C#中这样做。

感谢。我可以这样做,从ALTER TRIGGER开始,这将完成工作。

1 个答案:

答案 0 :(得分:2)

TableAdapter期望结果集,而不是实际查询。要成功完成此操作,您需要使用SqlCommand对象来实际执行更新。

如果您在使用之前没有使用过,那么首先声明您的连接,然后使用连接创建命令。创建命令后,将commandtext设置为等于您的脚本,然后可以在打开连接后调用ExecuteNonQuery()方法来运行脚本。如果您说的是您正在使用的语言,我可以尝试提供一个示例。

修改

这是一个C#示例,快速而肮脏,但它得到了重点。注意,从内存完成,但应该是正确的。

using(SqlConnection oConnection = new SqlConnection("Yourconnectionhere"))
using(SqlCommand oCommand = new SqlCommand(oConnection))
{
    //Configure the command object
    oCommand.CommandText = "Your script here";

    //Open connectin and run script
    oConnection.Open();
    oCommand.ExecuteNonQuery();
    oConnection.Close();
}