mirror of
				https://github.com/MariaDB/server.git
				synced 2025-10-30 04:26:45 +03:00 
			
		
		
		
	 a5a43da10e
			
		
	
	a5a43da10e
	
	
	
		
			
			added new field 'REFERENCED_TABLE_NAME' to 'referential_constraints' table field 'UNIQUE_CONSTRAINT_NAME' contains the name of the referenced index
		
			
				
	
	
		
			79 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			79 lines
		
	
	
		
			2.8 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
| -- source include/testdb_only.inc
 | |
| -- source include/have_innodb.inc
 | |
| --disable_warnings
 | |
| DROP TABLE IF EXISTS t1,t2,t3;
 | |
| --enable_warnings
 | |
| 
 | |
| #
 | |
| # Test for KEY_COLUMN_USAGE & TABLE_CONSTRAINTS tables
 | |
| #
 | |
| 
 | |
| CREATE TABLE t1 (id INT NOT NULL, PRIMARY KEY (id)) ENGINE=INNODB;
 | |
| CREATE TABLE t2 (id INT PRIMARY KEY, t1_id INT, INDEX par_ind (t1_id, id),
 | |
| FOREIGN KEY (t1_id) REFERENCES t1(id)  ON DELETE CASCADE,
 | |
| FOREIGN KEY (t1_id) REFERENCES t1(id)  ON UPDATE CASCADE) ENGINE=INNODB;
 | |
| 
 | |
| CREATE TABLE t3 (id INT PRIMARY KEY, t2_id INT, INDEX par_ind (t2_id),
 | |
| FOREIGN KEY (id, t2_id) REFERENCES t2(t1_id, id)  ON DELETE CASCADE) ENGINE=INNODB;
 | |
| 
 | |
| select * from information_schema.TABLE_CONSTRAINTS where
 | |
| TABLE_SCHEMA= "test";
 | |
| select * from information_schema.KEY_COLUMN_USAGE where
 | |
| TABLE_SCHEMA= "test";
 | |
| 
 | |
| drop table t3, t2, t1;
 | |
| 
 | |
| #
 | |
| # Test for REFERENTIAL_CONSTRAINTS table
 | |
| #
 | |
| CREATE TABLE t1(a1 INT NOT NULL, a2 INT NOT NULL,
 | |
|                 PRIMARY KEY(a1, a2)) ENGINE=INNODB;
 | |
| CREATE TABLE t2(b1 INT, b2 INT, INDEX (b1, b2),
 | |
|                 CONSTRAINT A1
 | |
|                 FOREIGN KEY (b1, b2) REFERENCES t1(a1, a2)
 | |
|                 ON UPDATE CASCADE ON DELETE NO ACTION) ENGINE=INNODB;
 | |
| CREATE TABLE t3(b1 INT, b2 INT, INDEX t3_indx (b1, b2),
 | |
| 		CONSTRAINT A2
 | |
| 		FOREIGN KEY (b1, b2) REFERENCES t2(b1, b2)
 | |
| 		ON UPDATE SET NULL ON DELETE RESTRICT) ENGINE=INNODB;
 | |
| CREATE TABLE t4(b1 INT, b2 INT, UNIQUE KEY t4_ukey (b1, b2),
 | |
|                 CONSTRAINT A3
 | |
|                 FOREIGN KEY (b1, b2) REFERENCES t3(b1, b2)
 | |
|                 ON UPDATE NO ACTION ON DELETE SET NULL) ENGINE=INNODB;
 | |
| CREATE TABLE t5(b1 INT, b2 INT, INDEX (b1, b2),
 | |
|                 CONSTRAINT A4
 | |
|                 FOREIGN KEY (b1, b2) REFERENCES t4(b1, b2)
 | |
|                 ON UPDATE RESTRICT ON DELETE CASCADE) ENGINE=INNODB;
 | |
| 		
 | |
| select a.CONSTRAINT_SCHEMA, b.TABLE_NAME, CONSTRAINT_TYPE,
 | |
|        b.CONSTRAINT_NAME, UNIQUE_CONSTRAINT_SCHEMA, UNIQUE_CONSTRAINT_NAME,
 | |
|        MATCH_OPTION, UPDATE_RULE, DELETE_RULE, b.REFERENCED_TABLE_NAME
 | |
| from information_schema.TABLE_CONSTRAINTS a,
 | |
|      information_schema.REFERENTIAL_CONSTRAINTS b
 | |
| where a.CONSTRAINT_SCHEMA = 'test' and a.CONSTRAINT_SCHEMA = b.CONSTRAINT_SCHEMA and
 | |
| a.CONSTRAINT_NAME = b.CONSTRAINT_NAME;
 | |
| drop tables t5, t4, t3, t2, t1;
 | |
| 
 | |
| #
 | |
| # Bug#25026  `information_schema.KEY_COLUMN_USAGE`.`REFERENCED_TABLE_NAME` returns garbage
 | |
| #
 | |
| create database `db-1`;
 | |
| use `db-1`;
 | |
| create table `t-2` (
 | |
|   id int(10) unsigned not null auto_increment,
 | |
|   primary key (id)
 | |
| ) engine=innodb;
 | |
| 
 | |
| create table `t-1` (
 | |
|   id int(10) unsigned not null auto_increment,
 | |
|   idtype int(10) unsigned not null,
 | |
|   primary key (id),
 | |
|   key fk_t1_1 (idtype),
 | |
|   constraint fk_t1_1 foreign key (idtype) references `t-2` (id)
 | |
| ) engine=innodb;
 | |
| use test;
 | |
| select referenced_table_schema, referenced_table_name 
 | |
| from information_schema.key_column_usage
 | |
| where constraint_schema = 'db-1';
 | |
| drop database `db-1`;
 |