我有一个名为Persion的现有表。在这个表格中,我有5列:
persionId Pname PMid Pdescription Pamt
在创建该表时,我将PersionId和Pname设置为主键。
现在我想在主键中再包含一列——PMID。我如何写一个ALTER语句来做到这一点?(我已经在表中有1000条记录)
我有一个名为Persion的现有表。在这个表格中,我有5列:
persionId Pname PMid Pdescription Pamt
在创建该表时,我将PersionId和Pname设置为主键。
现在我想在主键中再包含一列——PMID。我如何写一个ALTER语句来做到这一点?(我已经在表中有1000条记录)
当前回答
删除约束并重新创建它
alter table Persion drop CONSTRAINT <constraint_name>
alter table Persion add primary key (persionId,Pname,PMID)
编辑:
你可以通过下面的查询找到约束名:
select OBJECT_NAME(OBJECT_ID) AS NameofConstraint
FROM sys.objects
where OBJECT_NAME(parent_object_id)='Persion'
and type_desc LIKE '%CONSTRAINT'
其他回答
如果添加主键约束
ALTER TABLE <TABLE NAME> ADD CONSTRAINT <CONSTRAINT NAME> PRIMARY KEY <COLUMNNAME>
例如:
ALTER TABLE DEPT ADD CONSTRAINT PK_DEPT PRIMARY KEY (DEPTNO)
PRIMARY KEY约束唯一标识数据库表中的每条记录。 主键必须包含唯一值,列不能包含空值。
-- DROP current primary key
ALTER TABLE tblPersons DROP CONSTRAINT <constraint_name>
Example:
ALTER TABLE tblPersons
DROP CONSTRAINT P_Id;
-- ALTER TABLE tblpersion
ALTER TABLE tblpersion add primary key (P_Id,LastName)
请尝尝这个
ALTER TABLE TABLE_NAME DROP INDEX `PRIMARY`, ADD PRIMARY KEY (COLUMN1, COLUMN2,..);
删除约束并重新创建它
alter table Persion drop CONSTRAINT <constraint_name>
alter table Persion add primary key (persionId,Pname,PMID)
编辑:
你可以通过下面的查询找到约束名:
select OBJECT_NAME(OBJECT_ID) AS NameofConstraint
FROM sys.objects
where OBJECT_NAME(parent_object_id)='Persion'
and type_desc LIKE '%CONSTRAINT'
试着使用下面的代码:
ALTER TABLE `table name`
CHANGE COLUMN `column name` `column name` datatype NOT NULL,
ADD PRIMARY KEY (`column name`) ;