为alter table添加约束出错
问题描述:
我想添加约束到我的表名Account
,属性名称Type
。 在Type
,我要添加帐户例如类型:Saving, Credit Card, Home Loan, Personal Loan, Fixed Deposit, Current, iSaver.
为alter table添加约束出错
这里就是我的代码:
ALTER TABLE ACCOUNT
ADD CONSTRAINT AccountCK_Type
CHECK (TYPE IN('Saving','Credit Card','Home Loan','Personal Loan','Fixed Deposit','Current','iSaver'));
的错误显示:
>Error report -
>
>SQL Error: ORA-02293: cannot validate (SHT461.ACCOUNTCK_TYPE) - check constraint violated
>02293. 00000 - "cannot validate (%s.%s) - check constraint violated"
>
>*Cause: an alter table operation tried to validate a check constraint to
> populated table that had nocomplying values.
>
>*Action: Obvious
请提出一个我如何添加约束。谢谢。
答
如果你只是想约束申请未来的数据变化,如你所说的评论,然后你可以把它忽略其他现有的值与NOVALIDATE
clause:否则
ALTER TABLE ACCOUNT
ADD CONSTRAINT AccountCK_Type
CHECK (TYPE IN('Saving','Credit Card','Home Loan','Personal Loan',
'Fixed Deposit','Current','iSaver'))
ENABLE NOVALIDATE;
,你将不得不在创建约束之前,清理现有数据 - 删除或更正该列中任何其他值的行。
+0
非常感谢。有用! :-) – JSTai
从其中TYPE不是IN('Saving','Credit Card','Home Loan','Personal Loan','Fixed Deposit','Current','iSaver')的ACCOUNT中选择*。有没有结果? – Reisclef
I.e.表中是否存在违反您尝试创建的约束的行? – jarlh
如果有的话,你是否希望新的约束忽略这些约束,只适用于未来的插入/更新? –