我将2个表合并为1,使用以下语句
Select Calls.*,Patient.*
INTO Calls2
From Calls,Patient
现在,我将其中一个列设置为主键但我无法获得该主键以获得Identity Increment。 我该怎么办呢?
提前致谢, 马杜
答案 0 :(得分:1)
执行CREATE TABLE
“硬”方式?您可以从sys.columns
轻松构建此类命令。
或者在Management Studio中设置属性。请注意,这会丢弃表并重新创建它,因此如果表很大,请期待您的应用程序锁定一段时间。
答案 1 :(得分:1)
首先,您应该知道您正在制作表格的笛卡尔积。如果要在创建表时添加标识列,请执行以下操作:
Select IDENTITY(INT,1,1) ID, Calls.*,Patient.*
INTO Calls2
From Calls,Patient
答案 2 :(得分:0)
使用SQL Server Management Studio
右键单击该表,然后单击Design
。在右侧窗口底部的Column Properties
中,向下滚动到Identity Specification
。展开此按钮,然后将(Is Identity)
值更改为Yes
。
但是,如果表格中已有Id
列,则可以使用Calls
或Patient
表,这可能无效。我建议您创建一个新的Id
列并按上述方式配置Id
列。
答案 3 :(得分:0)
您无法将现有列转换为标识列。*如果您需要标识列,请添加新列:
ALTER TABLE Calls2 ADD Calls2Id int NOT NULL IDENTITY(1,1) ;
或者,如果您需要使用其中一个现有列,则需要使用显式CREATE TABLE来定义表而不是SELECT ... INTO。您还需要在INSERT INTO之前使用SET IDENTITY INSERT Calls2 ON。
CREATE TABLE Calls2 (
...columns...
) ;
SET IDENTITY_INSERT Calls2 ON ;
INSERT INTO Calls2 (... columns ...) SELECT ... columns ... FROM Calls, Patient ;
SET IDENTITY_INSERT Calls2 OFF ;
*虽然设计师可能会假装将其变成身份栏,但实际上并不是这样。正如Aaron Bertrand在他的回复中提到的那样,该表正在使用定义为标识列的列重新创建。