我有一个table_1
这是从table_2
通过下面的语句获取数据:INSTEAD OF触发器独特的PK ID
INSERT INTO database1.tbl_1 (idx, user_id, stasus_idx)
SELECT idx, user_id, stasus_idx
FROM database2.table_2
WHERE stasus_idx = 591
的table_1
有确切的列结构table_2
除了有在开始一个额外的列提供独特的ID
。所以table_1
列是这样的:
ID, idx, user_id, stasus_idx
我已经创建了一个INSTEAD OF TRIGGER
这样的:
CREATE TRIGGER trg_ID ON table_1
INSTEAD OF INSERT
AS
BEGIN
SET IDENTITY_INSERT table_1 ON
.
. -- trigger
.
SET IDENTITY_INSERT table_1 OFF
END
....插入每一行的新的独特的ID
但预期ID不起作用。它只是插入1记录及其完成。我可以将所有行取入CURSOR并逐个处理,但效率非常低。
感谢您的帮助。
难道你不能只声明'id int identity(1,1)unique'或'id int identity(1,1)primary key'? –
这太容易了:),唯一的ID实际上存在于许多表中,并且在所有这些表中必须是唯一的。所以当在一个表中插入唯一的ID时,它将增加下一个表的剩余位置等等。 – Milan
。 。如果您使用的是SQL Server 2012,则序列可以解决此问题(http://technet.microsoft.com/zh-cn/library/ff878058.aspx)。 –