mirror of
https://github.com/MariaDB/server.git
synced 2025-07-21 21:22:27 +03:00
145 lines
3.7 KiB
Plaintext
145 lines
3.7 KiB
Plaintext
#
|
|
# MDEV-14474: Create INFORMATION_SCHEMA.CHECK_CONSTRAINTS
|
|
#
|
|
set check_constraint_checks=1;
|
|
use test;
|
|
create table t0
|
|
(
|
|
t int, check (t>32) # table constraint
|
|
) ENGINE=myisam;
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
ALTER TABLE t0
|
|
ADD CONSTRAINT CHK_t0_t CHECK(t<100);
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CHK_t0_t
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` < 100
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
ALTER TABLE t0
|
|
DROP CONSTRAINT CHK_t0_t;
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
CREATE TABLE t1
|
|
( t int CHECK(t>2), # field constraint
|
|
tt int, CONSTRAINT CHK_tt CHECK(tt<100) # table constraint
|
|
) ENGINE=InnoDB;
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CHK_tt
|
|
TABLE_NAME t1
|
|
CHECK_CLAUSE `tt` < 100
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME t
|
|
TABLE_NAME t1
|
|
CHECK_CLAUSE `t` > 2
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
ALTER TABLE t1
|
|
DROP CONSTRAINT CHK_tt;
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME t
|
|
TABLE_NAME t1
|
|
CHECK_CLAUSE `t` > 2
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
create table t2
|
|
(
|
|
name VARCHAR(30) CHECK(CHAR_LENGTH(name)>2), #field constraint
|
|
start_date DATE,
|
|
end_date DATE,
|
|
CONSTRAINT CHK_dates CHECK(start_date IS NULL) #table constraint
|
|
)ENGINE=Innodb;
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME name
|
|
TABLE_NAME t2
|
|
CHECK_CLAUSE char_length(`name`) > 2
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CHK_dates
|
|
TABLE_NAME t2
|
|
CHECK_CLAUSE `start_date` is null
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME t
|
|
TABLE_NAME t1
|
|
CHECK_CLAUSE `t` > 2
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
ALTER TABLE t1
|
|
ADD CONSTRAINT CHK_new_ CHECK(t>tt);
|
|
SELECT * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME name
|
|
TABLE_NAME t2
|
|
CHECK_CLAUSE char_length(`name`) > 2
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CHK_dates
|
|
TABLE_NAME t2
|
|
CHECK_CLAUSE `start_date` is null
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME t
|
|
TABLE_NAME t1
|
|
CHECK_CLAUSE `t` > 2
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CONSTRAINT_1
|
|
TABLE_NAME t0
|
|
CHECK_CLAUSE `t` > 32
|
|
CONSTRAINT_CATALOG def
|
|
CONSTRAINT_SCHEMA test
|
|
CONSTRAINT_NAME CHK_new_
|
|
TABLE_NAME t1
|
|
CHECK_CLAUSE `t` > `tt`
|
|
create table t3
|
|
(
|
|
a int,
|
|
b int check (b>0), # field constraint named 'b'
|
|
CONSTRAINT b check (b>10) # table constraint
|
|
) ENGINE=InnoDB;
|
|
select * from information_schema.check_constraints order by check_clause;
|
|
CONSTRAINT_CATALOG CONSTRAINT_SCHEMA CONSTRAINT_NAME TABLE_NAME CHECK_CLAUSE
|
|
def test name t2 char_length(`name`) > 2
|
|
def test b t3 `b` > 0
|
|
def test b t3 `b` > 10
|
|
def test CHK_dates t2 `start_date` is null
|
|
def test t t1 `t` > 2
|
|
def test CONSTRAINT_1 t0 `t` > 32
|
|
def test CHK_new_ t1 `t` > `tt`
|
|
drop table t0;
|
|
drop table t1;
|
|
drop table t2;
|
|
drop table t3;
|