【发布时间】:2014-08-27 12:33:34
【问题描述】:
我是 sql server 和 T-SQL 的新手。我在同一个 microsoft sql 服务器上有两个数据库(dbA 和 dbB)。这两个数据库的表具有完全相同的字段,即 dbA.dbo.fldA、dbA.dbo.fldB、dbA.dbo.fldC、dbB.dbo.fldA、dbB.dbo.fldB 和 dbB.dbo.fldC。每当在 dbA 中添加满足条件的新记录(例如 dbA.dbo.fldC 0)时,我都希望有一个触发器,它会自动在 dbB 中添加这条记录。但不是相反,如果在 dbB 中添加了一条记录,则它不应自动复制到 dbA 中。
这是我当前的触发器。但我不确定我应该如何激活它。
CREATE TRIGGER tradesToOps
ON dbInv.dbo.tblDatTradesToday
AFTER INSERT,DELETE,UPDATE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering with SELECT statements.
SET NOCOUNT ON;
DECLARE @INSERT INT, @DELETE INT
SET @INSERT = (SELECT COUNT(*) FROM INSERTED)
SET @DELETE = (SELECT COUNT(*) FROM DELETED)
-- when Insert happens
IF @INSERT = 1 AND @DELETE = 0
BEGIN
INSERT INTO dbOps.dbo.tblDatTrades
SELECT * FROM INSERTED
END
-- Insert statements for trigger here
END
最好的,
手动
【问题讨论】:
-
到底是什么问题?到目前为止,您尝试过什么?
-
从您的问题看来,您似乎不了解触发器的工作原理或如何创建触发器,或者不了解基于布尔谓词有条件地插入记录的 T-SQL 语句。您只需创建一个执行上述操作的触发器(使用适当的 T-SQL 插入语句)。在 MSDN 上阅读有关触发器以及 T-SQL 插入语句和 T-SQL If 语句的信息。
-
我要问的主要问题是为什么? ...为什么视图不能?为什么需要跨数据复制?
-
你根本不需要这样做,你可以从一个查询另一个。
标签: sql-server triggers