初始查询
DECLARE @Table1 TABLE (ID int, Value varchar(50))
DECLARE @Table2 TABLE (Value varchar(50))
DECLARE @MaxID1 int
DECLARE @MaxID2 int = 52
INSERT INTO @Table1 (ID, Value)
Values (1,'One'),(2,'Two'),(3,'Three'),(4,'Four'),(5,'Five')
INSERT INTO @Table2 (Value)
Values ('Six'),('Seven'),('Eight'),('Nine'),('Ten')
SELECT * FROM @Table1
SELECT * FROM @Table2
SELECT @MaxID1 = MAX(ID) FROM @Table1
SELECT @MaxID1 Scenario1, @MaxID2 Scenario2
从@ Table2插入值(值字段)后@ Table1的预期结果
// (使用@ MaxID1的情景#1)
ID Value
1 One
2 Two
3 Three
4 Four
5 Five
6 Six
7 Seven
8 Eight
9 Nine
10 Ten
// (使用@ MaxID2的情景#2)
ID Value
1 One
2 Two
3 Three
4 Four
5 Five
52 Six
53 Seven
54 Eight
55 Nine
56 Ten
如何从另一个表(@ Table2)对该表(@ Table1)执行INSERT查询时,如何半身份手动将ID值插入Identity列(ID)?在第一个场景中,我希望从@ Table1获取Max(ID)并向其添加1并继续添加记录。在第二种情况下,我希望采用预定义的#然后开始添加记录,其中第一个新记录的ID将是预定义值,所有后续新记录将是Max(ID)+ 1.
谢谢
UPDATED @Table 1没有身份约束。
答案 0 :(得分:1)
如果要将任意int值插入标识列,请使用IDENTITY_INSERT:
SET IDENTITY_INSERT [table_name] ON;
给定会话一次只能有一个表可以启用此属性。确保在完成后将其关闭:
SET IDENTITY_INSERT [table_name] OFF;