Alter table在SQL中添加检查条件
鉴于: 如何使用alter表将“戏剧”添加到Chu流派? 我想这大概是:Alter table在SQL中添加检查条件,sql,oracle,ddl,alter-table,check-constraints,Sql,Oracle,Ddl,Alter Table,Check Constraints,鉴于: 如何使用alter表将“戏剧”添加到Chu流派? 我想这大概是: CREATE TABLE SHOW ( ID VARCHAR2(10), GENRE VARCHAR2(25) NOT NULL, CONSTRAINT CH_GENRE CHECK (GENRE IN ('war','western')), ) 但它不起作用。从技术上讲,您需要删除并重新创建约束: ALTER TABLE TV_SHOW ADD CONSTRAINT ADD_RO
CREATE TABLE SHOW (
ID VARCHAR2(10),
GENRE VARCHAR2(25) NOT NULL,
CONSTRAINT CH_GENRE CHECK (GENRE IN ('war','western')),
)
但它不起作用。从技术上讲,您需要删除并重新创建约束:
ALTER TABLE TV_SHOW
ADD CONSTRAINT ADD_ROMANTIC
CHECK (GENRE IN ('romantic'));
如果有很多行,验证约束可能会很昂贵。另一方面,由于我们只是添加另一个可能的值,我们知道所有值都已经有效,因此我们可以跳过验证,如下所示:
alter table show drop constraint ch_genre;
alter table show
add constraint ch_genre
check (genre in ('war', 'western', 'romantic'))
enable
;
如果您发现自己在定期修改值列表,这表明您应该有一个单独的表来存储该列表,比如说genres
,以及一个与show
与genres
相关的外键(可能通过整数、代理主键而不是字符串)。简单地说>>
删除并重新创建约束
alter table show
add constraint ch_genre
check (genre in ('war', 'western', 'romantic'))
enable novalidate
;
删除并重新创建检查约束,如下所示:
ALTER TABLE SHOW Drop CONSTRAINT CH_GENRE; ALTER TABLE SHOW ADD
CONSTRAINT CH_GENRE CHECK (GENRE IN ('war','western','Drama'));
您的表包含数据??我的意思是专栏体裁包含的数据不在(‘战争’、‘西部’、‘戏剧’)这些价值观中??
CREATE TABLE SHOW (
ID VARCHAR2(10),
GENRE VARCHAR2(25) NOT NULL,
CONSTRAINT CH_GENRE CHECK (GENRE IN ('war','western'))
);
Table SHOW created.
alter table SHOW drop constraint CH_GENRE ;
Table SHOW altered.
alter table SHOW add constraint CH_GENRE check (GENRE IN ('war','western','romantic'));
Table SHOW altered.