polardbxengine/mysql-test/suite/ndb/r/ndb_fk_setnull.result

101 lines
4.0 KiB
Plaintext

create table parent (
a int primary key auto_increment,
b int not null,
c int not null,
unique(b) using hash,
index(c)) engine = ndb;
create table child (
a int primary key auto_increment,
b int,
c int,
unique(b) using hash,
index(c)) engine = ndb;
Warnings:
Warning 1121 Ndb does not support unique index on NULL valued attributes, index access with NULL value will become full table scan
alter table child add constraint fkname foreign key (b) references parent (a) on update restrict on delete set null;
insert into parent values (1,1,1),(2,2,2);
insert into child values (1,1,1),(2,2,2);
insert into child values (3,3,3);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`b`) REFERENCES `parent` (`a`) ON DELETE SET NULL ON UPDATE RESTRICT)
update child set b = 3 where a = 1;
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`b`) REFERENCES `parent` (`a`) ON DELETE SET NULL ON UPDATE RESTRICT)
begin;
delete from parent where a = 1;
select * from child order by 1,2,3;
a b c
1 NULL 1
2 2 2
commit;
delete from child;
delete from parent;
alter table child drop foreign key fkname;
alter table child add constraint fkname foreign key (c) references parent (a) on update restrict on delete set null;
insert into parent values (1,1,1),(2,2,2);
insert into child values (1,1,1),(2,2,2),(3,3,1);
update child set c = 3 where a = 1;
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`c`) REFERENCES `parent` (`a`) ON DELETE SET NULL ON UPDATE RESTRICT)
insert into child values (4,4,4);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`c`) REFERENCES `parent` (`a`) ON DELETE SET NULL ON UPDATE RESTRICT)
begin;
delete from parent where a = 1;
select * from child order by 1,2,3;
a b c
1 1 NULL
2 2 2
3 3 NULL
commit;
delete from child;
delete from parent;
alter table child drop foreign key fkname;
alter table child add constraint fkname foreign key (b) references parent (b) on update set null on delete set null;
insert into parent values (1,1,1),(2,2,2);
insert into child values (1,1,1),(2,2,2);
update child set b = 3 where a = 1;
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`b`) REFERENCES `parent` (`b`) ON DELETE SET NULL ON UPDATE SET NULL)
insert into child values (3,3,3);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`b`) REFERENCES `parent` (`b`) ON DELETE SET NULL ON UPDATE SET NULL)
begin;
update parent set b = 3 where a = 1;
select * from child order by 1,2,3;
a b c
1 NULL 1
2 2 2
rollback;
begin;
delete from parent where a = 1;
select * from child order by 1,2,3;
a b c
1 NULL 1
2 2 2
commit;
delete from child;
delete from parent;
alter table child drop foreign key fkname;
alter table child add constraint fkname foreign key (c) references parent (b) on update set null on delete set null;
insert into parent values (1,1,1),(2,2,2);
insert into child values (1,1,1),(2,2,2),(3,3,1);
update child set c = 3 where a = 1;
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`c`) REFERENCES `parent` (`b`) ON DELETE SET NULL ON UPDATE SET NULL)
insert into child values (4,4,4);
ERROR 23000: Cannot add or update a child row: a foreign key constraint fails (`test`.`child`, CONSTRAINT `fkname` FOREIGN KEY (`c`) REFERENCES `parent` (`b`) ON DELETE SET NULL ON UPDATE SET NULL)
begin;
update parent set b = 3 where a = 1;
select * from child order by 1,2,3;
a b c
1 1 NULL
2 2 2
3 3 NULL
rollback;
begin;
delete from parent where a = 1;
select * from child order by 1,2,3;
a b c
1 1 NULL
2 2 2
3 3 NULL
commit;
delete from child;
delete from parent;
alter table child drop foreign key fkname;
drop table parent, child;