create table parent (
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
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(b) on delete restrict on update cascade;
insert into parent values (1,1,1), (2,2,2);
insert into child values (1,1,1),(2,2,2);
begin;
update parent set b = 1 where a = 1;
select * from child order by 1,2,3;
a	b	c
1	1	1
2	2	2
rollback;
begin;
update parent set b = null where a = 1;
select * from child order by 1,2,3;
a	b	c
1	NULL	1
2	2	2
rollback;
begin;
update parent set b = 3 where a = 1;
select * from child order by 1,2,3;
a	b	c
1	3	1
2	2	2
rollback;
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 delete restrict on update cascade;
insert into parent values (1,1,1),(2,2,2);
insert into child values (1,1,1),(2,2,2),(3,3,1),(4,4,2);
begin;
update parent set b = null where a = 1;
select * from child order by 1,2,3;
a	b	c
1	1	NULL
2	2	2
3	3	NULL
4	4	2
rollback;
begin;
update parent set b = 3 where a = 1;
select * from child order by 1,2,3;
a	b	c
1	1	3
2	2	2
3	3	3
4	4	2
rollback;
delete from child;
delete from parent;
alter table child drop foreign key fkname;
drop table parent, child;
