我对SQL Server还是相当陌生,并且正在努力创建满足我需要的触发器。
我们有一个表,在插入记录之前,我们要操纵输入值。
表格示例:
MyTable
(
[RUID] INT IDENTITY(1,1),
[CustomerName] nvarchar(200),
[CustomerStatus] INT,
[CustomerType] char(1),
[OtherFields] nvarchar(100)
)
插入内容可能像这样:
INSERT INTO MyTable ([CustomerName], [CustomerStatus], [CustomerType], [OtherFields])
VALUES ('LName~FName', 2, 'A', 'Other Info')
我们无法控制源系统执行插入操作(一种供应商的产品已经淘汰了几年,因此管理层不希望花费大笔金钱来更改它们),但是我们需要这发生。
插入的CustomerStatus是插入值的2倍
CustomerType-不管发送的是什么值,我们都希望使用值'B'覆盖
所有其他列均保持不变。
因此,使用上面示例中的值发送的插入,我们实际上希望它最终出现在表中:
'LName~FName', 4, 'B', 'Other Info'
您能提供的任何帮助将不胜感激。
眼镜:
您基本上需要一个代替触发器。代码看起来像...
CREATE TRIGGER tr_Insert_MyTable
ON MyTable
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
INSERT INTO MyTable ([CustomerName], [CustomerStatus], [CustomerType], [OtherFields])
SELECT [CustomerName]
, [CustomerStatus] * 2 AS [CustomerStatus]
,'B' [CustomerType]
, [OtherFields]
FROM inserted
END
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句