如果表没有主键,则将列设置为主键

pet*_*ski 29 t-sql

我在db中有一列有5列但没有主键.其中一列名为myTable_id,为整数.

我想检查表是否有主键列.如果没有,则将myTable_id设为主键列并使其成为标识列.有没有办法做到这一点?

我试过这个:

ALTER TABLE Persons
DROP CONSTRAINT pk_PersonID

ALTER TABLE Persons
ADD PRIMARY KEY (P_Id)
Run Code Online (Sandbox Code Playgroud)

我在Management studio中遇到语法错误.

Urb*_*man 47

这将检查主键是否存在,如果不存在则创建主键

IF NOT EXISTS (SELECT * FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS 
WHERE CONSTRAINT_TYPE = 'PRIMARY KEY' AND TABLE_NAME = 'Persons' 
AND TABLE_SCHEMA ='dbo')
BEGIN
   ALTER TABLE Persons ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id)
END
ELSE
BEGIN
   -- Key exists
END
Run Code Online (Sandbox Code Playgroud)

小提琴:http://sqlfiddle.com/#!6/ e165d/2


Cri*_*ris 8

ALTER TABLE Persons
ADD CONSTRAINT pk_PersonID PRIMARY KEY (P_Id)
Run Code Online (Sandbox Code Playgroud)

  • 未解决“我要检查表是否具有主键列”。 (2认同)