polardbxengine/mysql-test/suite/ndbcluster/information_schema_fk.test

110 lines
2.7 KiB
Plaintext

--source include/have_ndb.inc
--echo #
--echo # basic, i_s.table_constraints, is.key_column_usage
--echo #
create table product (
category int not null,
id int not null,
price decimal,
primary key(category, id)
) engine=ndb;
create table customer (
id int not null,
primary key (id)
) engine=ndb;
create table product_order (
no int not null auto_increment,
product_category int not null,
product_id int not null,
customer_id int not null,
primary key(no),
index (product_category, product_id),
constraint fk1 foreign key (product_category, product_id)
references product(category, id)
on update restrict on delete cascade,
index (customer_id),
constraint fk2 foreign key (customer_id) references customer(id)
) engine=ndb;
create table emp (
id int primary key auto_increment,
manager int,
key (manager),
constraint emp_fk1 foreign key (manager) references emp (id)
) engine=ndb;
select * from information_schema.table_constraints
where table_schema = 'test'
order by table_name, constraint_type, constraint_name;
select CONCAT_WS('.', TABLE_NAME, COLUMN_NAME) as COL,
ORDINAL_POSITION,
POSITION_IN_UNIQUE_CONSTRAINT,
CONCAT_WS('.', REFERENCED_TABLE_NAME, REFERENCED_COLUMN_NAME) as REFERENCED_COL
from information_schema.key_column_usage
where table_schema = 'test'
order by COL, ORDINAL_POSITION;
drop table product_order, customer, product, emp;
--echo #
--echo # databases, circular, i_s.referential_constraints
--echo #
create database mydb1;
create database mydb2;
create table mydb1.t1 (
a1 int not null,
b1 int not null,
primary key using hash (a1),
unique key xb1 (b1)
) engine=ndb;
create table mydb2.t2 (
a2 int not null,
b2 int not null,
primary key using hash (a2),
unique key xb2 (b2)
) engine=ndb;
alter table mydb1.t1
add constraint fk_b1a1 foreign key (b1) references mydb1.t1 (a1),
add constraint fk_b1b2 foreign key (b1) references mydb2.t2 (b2);
alter table mydb2.t2
add constraint fk_b2a2 foreign key (b2) references mydb2.t2 (a2),
add constraint fk_b2b1 foreign key (b2) references mydb1.t1 (b1);
select *
from information_schema.referential_constraints
order by constraint_schema, constraint_name;
select *
from information_schema.table_constraints
where table_schema like 'mydb%'
order by table_name, constraint_type, constraint_name;
select *
from information_schema.key_column_usage
where table_schema like 'mydb%'
order by constraint_schema, constraint_name;
alter table mydb1.t1
drop foreign key fk_b1a1,
drop foreign key fk_b1b2;
alter table mydb2.t2
drop foreign key fk_b2a2,
drop foreign key fk_b2b1;
drop table mydb1.t1;
drop table mydb2.t2;
drop database mydb1;
drop database mydb2;