0

我需要更改 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 开始这样做,这将完成工作。

4

1 回答 1

2

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

如果您在它非常简单之前没有使用过,首先您声明您的连接,然后使用该连接创建您的命令。创建命令后,将命令文本设置为等于您的脚本,然后您可以在打开连接后调用 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();
}
于 2008-11-05T15:58:18.820 回答