如果列int
是nvarchar,我想添加Id
主键。我有一个模糊的想法怎么做:
DECLARE @columnType ... = SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'TempTable' AND
COLUMN_NAME = 'Id';
IF ISNUMERIC(@columnType)<>1
ALTER TABLE TempTable ALTER COLUMN Id int IDENTITY(1,1), ADD PRIMARY KEY (Id);
ELSE
ALTER TABLE TempTable ADD PRIMARY KEY (Id);
我不知道如何使它工作,但我认为我已经很接近了。
答案 0 :(得分:1)
我已经做到了自己想要的。也许有人会从中受益:
IF 'Int' in (SELECT DATA_TYPE
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
TABLE_NAME = 'TempTable' AND
COLUMN_NAME = 'Id')
BEGIN
ALTER TABLE TempTable ADD PRIMARY KEY (Id)
END
ELSE
BEGIN
ALTER TABLE TempTable ADD Idd int IDENTITY (1,1)
ALTER TABLE TempTable ADD PRIMARY KEY (Idd)
END
GO
基本上,它检查列的类型是否为INT
,如果是,则在ID列上添加主键。如果不是,它将创建新列Idd
并将其设置为int主键。
非常具体的问题,也许有人会利用我的折磨。
编辑:检查Int
是否为选定类型时出错。