使用GBase8s数据库,想知道GBase 8s 如何在有外键关系的表中删除数据
有两种方式:
方式一:先删除外键表中的数据,再删除当前数据
举例:
drop table if exists t1;
drop table if exists t2;
create table t1(id int primary key , s1 float);
create table t2(id int , id1 int ,s1 float,foreign key(id1) references t1(id) );
insert into t1 values(1,20);
insert into t1 values(2,30);
insert into t2 values(1,1,50);
--如果你直接删除t1的数据,则报错
delete t1;
692: Key value for constraint (root.u143_565) is still being referenced.
Error in line 1
Near character position 8
--需要先删除t2表中的数据,才能删除t1表中的数据
delete t2;
delete t1;
方式二:可以通过外键设置级联删除
--在设置外键时,设置级联删除
drop table t2;
drop table t1;
create table t1(id int primary key , s1 float);
create table t2(id int , id1 int ,s1 float,foreign key(id1) references t1(id) on delete cascade);
insert into t1 values(1,20);
insert into t1 values(2,30);
insert into t2 values(1,1,50);
--此时删除t1的数据,则删除t1及t2中数据
delete t1;
2 row(s) deleted.
select * from t2;
id id1 s1
No rows found.
你好,我是有问必答小助手,非常抱歉,本次您提出的有问必答问题,技术专家团超时未为您做出解答
本次提问扣除的有问必答次数,将会以问答VIP体验卡(1次有问必答机会、商城购买实体图书享受95折优惠)的形式为您补发到账户。
因为有问必答VIP体验卡有效期仅有1天,您在需要使用的时候【私信】联系我,我会为您补发。