2008-5-16 19:37
zixuniaoyou
删除有外键约束的列
timesten数据库里 我想删除有外键约束的列怎么办呢??
CREATE table_a (
a varchar(15),
b binary(1),
PRIMARY KEY (a),
FOREIGN KEY (b) REFERENCES table_c (K_b)
);
我如何drop掉b 呢??
按照document 里说的:应该是:
ALTER TABLE [Owner.]TableName
DROP CONSTRAINT ForeignKeyName
ALTER TABLE table_a DROP CONSTRAINT b ;
但是删除不掉啊。。谁来帮帮我。
还有增加外健约束的列如何增加呢??
2008-5-28 13:20
tom_111
altibase内存数据库可以删除外键约束,这都是标准的SQL。
测试场景:表t_usr和t_dept进行关联,其中在主表t_usr上创建外键,此外键与子表t_dept表的列id关联。
操作步骤:
---------创建表-------------
iSQL> create table t_usr(id integer,deptid integer,name char(30));
Create success.
iSQL> create table t_dept(id integer,name varchar(40));
Create success.
---------创建唯一索引-------------
iSQL> create unique index inx_deptid on t_usr(deptid);
Create success.
iSQL> create unique index inx_id on t_dept(id);
Create success.
---------创建主表FK-------------
iSQL> alter table t_usr add constraint fk_deptid foreign key(deptid) references t_dept(id);
Alter success.
---------向子表插入数据------------
iSQL> insert into t_dept values(1,'dd');
1 row inserted.
iSQL> insert into t_dept values(2,'ee');
1 row inserted.
---------向主表插入数据------------
iSQL> insert into t_usr values(1,2,'bbb');
1 row inserted.
---------验证主表fk是否创建成功------------
iSQL> insert into t_usr values(2,3,'vvv');
[ERR-31077 : The parent record is not found for FK_DEPTID.]
iSQL> insert into t_usr values(2,1,'fff');
1 row inserted.
---------删除主表FK-------------
iSQL> alter table t_usr drop CONSTRAINt fk_deptid;
Alter success.
---------验证主表fk是否删除成功---------
iSQL> insert into t_usr values(3,4,'ggg');
1 row inserted.