我想将主键IDD
添加到架构中的每个'Temp...'
表。我正在尝试通过以下方式进行操作:
DECLARE @addId VARCHAR(MAX) = '';
SELECT @addId = @addId + 'ALTER TABLE ['+ TABLE_NAME +'] ADD IDD int IDENTITY(1,1);ALTER TABLE ['+TABLE_NAME +'] ADD PRIMARY KEY (IDD);' FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'Temp%'
EXEC (@addId );
我返回了这样的错误:
Multiple identity columns specified for table 'TempTable'. Only one identity column per table is allowed.
我做错了什么?
编辑:表中尚未定义主键。
答案 0 :(得分:0)
尝试
SELECT @addId = @addId +
ALTER TABLE ['+ TABLE_NAME +'] ADD IDD int PRIMARY KEY IDENTITY(1,1);
FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME LIKE 'Temp%'
答案 1 :(得分:0)
使用此查询可获取所有没有主键的表:
select * FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_NAME NOT IN(SELECT TABLE_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS
WHERE CONSTRAINT_TYPE='PRIMARY KEY')
并相应地修改动态查询。