我有一个 SQL Server 2008 数据库。有三个端子连接到它(A、B、C)。数据库中有一个表SampleTable
,它对任何终端活动作出反应。每次登录到此数据库的任何终端上有一些活动时,新行都会插入到SampleTable
.
我想将来自三个终端中的一个 (C) 的流量重定向到表 RealTable 而不是 SampleTable,但我必须在 DB 层执行此操作,因为将终端活动写入 DB 的服务位于黑盒中。
我已经有一些SampleTable
使用重定向逻辑的触发器,但问题是行仍然被插入到SampleTable
.
什么是最干净的解决方案。我确信在插入触发器中删除行是坏的,坏的,坏的。
请帮忙。
编辑:
我们当前的逻辑是这样的(这是伪代码):
ALTER TRIGGER DiffByTerminal
ON SampleTable
AFTER INSERT
AS
DECLARE @ActionCode VARCHAR(3),
@ActionTime DATETIME,
@TerminalId INT
SELECT @ActionCode = ins.ActionCode,
@ActionTime = ins.ActionTime,
@TerminalId = ins.TerminalId
FROM inserted ins
IF(@TerminalId = 'C')
BEGIN
INSERT INTO RealTable
(
...
)
VALUES
(
@ActionCode,
@ActionTime,
@TerminalId
)
END