添加一个新的主键,以现有的表
我有表,以下细节添加一个新的主键,以现有的表
表名EMPLOYEE
和列
EMPID (PK smallint not null)
EMPNAME (varchar 256 not null)
ORG (FK smallint not null)
FUNCTION (FK smallint not null)
EFF_DATE (datetime null)
AUDIT_ID (varchar null)
现在我有一个额外的coulmn添加到该表ADD_UID
,使其也主要键
我正在使用此查询,但失败。
ALTER TABLE CVADMIN.EMPLOYEE
ADD ADD_UID varchar(32) NULL,
CONSTRAINT PK_EMPLOYEE PRIMARY KEY [NON]CLUSTERED (ADD_UID)
go
表'EMPLOYEE
'已经定义了一个主键。
编辑
这里的想法是新列应该是唯一的,所以有些代码操作完成
要添加唯一的约束(这是额外的,如果它失败,我可以抛出_KEY_VIOLATION主键)做到这一点:
ALTER TABLE EMPLOYEE ADD CONSTRAINT uc_UID UNIQUE (ADD_UID)
我们可以通过ALTER语句中的任何表添加新列,但添加的列可以null
,你知道主键在任何栏目上不接受null
。
因此,我们不能通过alter语句在新添加的列上创建主键。
'NOT NULL UNIQUE'。 – 2011-08-22 22:37:24
不,这不是问题。您可以通过执行ALTER TABLE x ADD y INT NOT NULL DEFAULT 0;将默认值设置为非空来防止空值,并且该列对于一行表也可以是唯一的。但绝对的主要指标可能只有一个。 – hynekcer 2012-11-13 22:50:40
我想你可能必须先删除原来的主键,然后根据需要创建一个新的主键。只记得你每个表只能有一个主键,以为你可以有更多的唯一键。 – 2010-10-07 08:51:22
因为在其他地方引用(2places),所以放弃第一个关键点并不是好主意。如何确保这个额外的柱子ADD_ID取得独特的价值 – GustyWind 2010-10-07 08:57:16