Commit 733f2a43 authored by Thomas G. Lockhart's avatar Thomas G. Lockhart

Change constraint syntax to SQL92 style.

Add tests for PRIMARY KEY and UNIQUE clauses.
parent 5d7c9119
No related merge requests found
--
-- Check constraints
-- Constraints can be specified with either DEFAULT or CHECK clauses.
-- Constraints can be specified with:
-- - DEFAULT clause
-- - CHECK clauses
-- - PRIMARY KEY clauses
-- - UNIQUE clauses
--
--
......@@ -8,24 +12,26 @@
--
CREATE TABLE DEFAULT_TBL (i int DEFAULT 100,
x text DEFAULT 'vadim', f float8 DEFAULT 123.456);
x text DEFAULT 'vadim', f float8 DEFAULT 123.456);
INSERT INTO DEFAULT_TBL VALUES (1, 'thomas', 57.0613);
INSERT INTO DEFAULT_TBL VALUES (1, 'bruce');
INSERT INTO DEFAULT_TBL (i, f) VALUES (2, 987.654);
INSERT INTO DEFAULT_TBL (x) VALUES ('tgl');
INSERT INTO DEFAULT_TBL (x) VALUES ('marc');
INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0);
SELECT '' AS four, * FROM DEFAULT_TBL;
SELECT '' AS five, * FROM DEFAULT_TBL;
CREATE SEQUENCE DEFAULT_SEQ;
CREATE TABLE DEFAULTEXPR_TBL (i1 int DEFAULT 100 + (200-199) * 2,
i2 int DEFAULT nextval('default_seq'));
i2 int DEFAULT nextval('default_seq'));
INSERT INTO DEFAULTEXPR_TBL VALUES (-1, -2);
INSERT INTO DEFAULTEXPR_TBL (i1) VALUES (-3);
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4);
INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (NULL);
SELECT '' AS four, * FROM DEFAULTEXPR_TBL;
-- errors
......@@ -39,8 +45,8 @@ CREATE TABLE error_tbl (b1 bool DEFAULT 1 < 2);
-- CHECK syntax
--
CREATE TABLE CHECK_TBL (x int)
CONSTRAINT CHECK_CON CHECK (x > 3);
CREATE TABLE CHECK_TBL (x int,
CONSTRAINT CHECK_CON CHECK (x > 3));
INSERT INTO CHECK_TBL VALUES (5);
INSERT INTO CHECK_TBL VALUES (4);
......@@ -49,9 +55,14 @@ INSERT INTO CHECK_TBL VALUES (2);
INSERT INTO CHECK_TBL VALUES (6);
INSERT INTO CHECK_TBL VALUES (1);
SELECT '' AS three, * FROM CHECK_TBL;
CREATE SEQUENCE CHECK_SEQ;
CREATE TABLE CHECK2_TBL (x int, y text, z int)
CONSTRAINT SEQUENCE_CON CHECK (x > 3 and y <> 'check failed' and x < 8);
CREATE TABLE CHECK2_TBL (x int, y text, z int,
CONSTRAINT SEQUENCE_CON
CHECK (x > 3 and y <> 'check failed' and z < 8));
INSERT INTO CHECK2_TBL VALUES (4, 'check ok', -2);
INSERT INTO CHECK2_TBL VALUES (1, 'x check failed', -2);
INSERT INTO CHECK2_TBL VALUES (5, 'z check failed', 10);
......@@ -59,6 +70,8 @@ INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2);
INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11);
INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
SELECT '' AS two, * from CHECK2_TBL;
--
-- Check constraints on INSERT
--
......@@ -66,15 +79,16 @@ INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
CREATE SEQUENCE INSERT_SEQ;
CREATE TABLE INSERT_TBL (x INT DEFAULT nextval('insert_seq'),
y TEXT DEFAULT '-NULL-', z INT DEFAULT -1 * currval('insert_seq') )
CONSTRAINT INSERT_CON CHECK (x >= 3 AND y <> 'check failed' AND x < 8),
CHECK x + z = 0;
y TEXT DEFAULT '-NULL-', z INT DEFAULT -1 * currval('insert_seq'),
CONSTRAINT INSERT_CON CHECK (x >= 3 AND y <> 'check failed' AND x < 8),
CHECK (x + z = 0));
INSERT INTO INSERT_TBL VALUES (null, null, null);
INSERT INTO INSERT_TBL(x,z) VALUES (2, -2);
SELECT * FROM INSERT_TBL;
SELECT nextval('insert_seq');
SELECT '' AS zero, * FROM INSERT_TBL;
SELECT 'one' AS one, nextval('insert_seq');
INSERT INTO INSERT_TBL(y) VALUES ('Y');
INSERT INTO INSERT_TBL(y) VALUES ('Y');
......@@ -83,15 +97,21 @@ INSERT INTO INSERT_TBL(z,x) VALUES (-7, 7);
INSERT INTO INSERT_TBL VALUES (5, 'check failed', -5);
INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7);
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT * FROM INSERT_TBL;
SELECT '' AS four, * FROM INSERT_TBL;
INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4);
INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed');
INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
SELECT * FROM INSERT_TBL;
SELECT nextval('insert_seq');
SELECT '' AS six, * FROM INSERT_TBL;
SELECT 'seven' AS one, nextval('insert_seq');
INSERT INTO INSERT_TBL(y) VALUES ('Y');
SELECT currval('insert_seq');
SELECT 'eight' AS one, currval('insert_seq');
--
-- Check constraints on INSERT INTO
......@@ -99,18 +119,23 @@ SELECT currval('insert_seq');
DELETE FROM INSERT_TBL;
DROP SEQUENCE INSERT_SEQ;
CREATE SEQUENCE INSERT_SEQ START 4;
CREATE TABLE TEMP (xd INT, yd TEXT, zd INT);
INSERT INTO TEMP VALUES (null, 'Y', null);
INSERT INTO TEMP VALUES (5, '!check failed', null);
INSERT INTO TEMP VALUES (null, 'try again', null);
INSERT INTO INSERT_TBL(y) select yd from TEMP;
SELECT * FROM INSERT_TBL;
SELECT '' AS three, * FROM INSERT_TBL;
INSERT INTO INSERT_TBL SELECT * FROM TEMP WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM TEMP WHERE yd = 'try again';
INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM TEMP WHERE yd = 'try again';
SELECT * FROM INSERT_TBL;
SELECT '' AS four, * FROM INSERT_TBL;
DROP TABLE TEMP;
......@@ -122,17 +147,87 @@ UPDATE INSERT_TBL SET x = NULL WHERE x = 6;
UPDATE INSERT_TBL SET x = 6 WHERE x = 6;
UPDATE INSERT_TBL SET x = -z, z = -x;
UPDATE INSERT_TBL SET x = z, z = x;
SELECT * FROM INSERT_TBL;
-- DROP TABLE INSERT_TBL;
--
-- Check constraints on COPY FROM
--
CREATE TABLE COPY_TBL (x INT, y TEXT, z INT)
CONSTRAINT COPY_CON CHECK (x > 3 AND y <> 'check failed' AND x < 7 );
CREATE TABLE COPY_TBL (x INT, y TEXT, z INT,
CONSTRAINT COPY_CON
CHECK (x > 3 AND y <> 'check failed' AND x < 7 ));
COPY COPY_TBL FROM '_OBJWD_/data/constro.data';
SELECT * FROM COPY_TBL;
SELECT '' AS two, * FROM COPY_TBL;
COPY COPY_TBL FROM '_OBJWD_/data/constrf.data';
SELECT * FROM COPY_TBL;
--
-- Primary keys
--
CREATE TABLE PRIMARY_TBL (i int PRIMARY KEY, t text);
INSERT INTO PRIMARY_TBL VALUES (1, 'one');
INSERT INTO PRIMARY_TBL VALUES (2, 'two');
INSERT INTO PRIMARY_TBL VALUES (1, 'three');
INSERT INTO PRIMARY_TBL VALUES (4, 'three');
INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six');
SELECT '' AS four, * FROM PRIMARY_TBL;
DROP TABLE PRIMARY_TBL;
CREATE TABLE PRIMARY_TBL (i int, t text,
PRIMARY KEY(i,t));
INSERT INTO PRIMARY_TBL VALUES (1, 'one');
INSERT INTO PRIMARY_TBL VALUES (2, 'two');
INSERT INTO PRIMARY_TBL VALUES (1, 'three');
INSERT INTO PRIMARY_TBL VALUES (4, 'three');
INSERT INTO PRIMARY_TBL VALUES (5, 'one');
INSERT INTO PRIMARY_TBL (t) VALUES ('six');
SELECT '' AS three, * FROM PRIMARY_TBL;
DROP TABLE PRIMARY_TBL;
--
-- Unique keys
--
CREATE TABLE UNIQUE_TBL (i int UNIQUE, t text);
INSERT INTO UNIQUE_TBL VALUES (1, 'one');
INSERT INTO UNIQUE_TBL VALUES (2, 'two');
INSERT INTO UNIQUE_TBL VALUES (1, 'three');
INSERT INTO UNIQUE_TBL VALUES (4, 'four');
INSERT INTO UNIQUE_TBL VALUES (5, 'one');
INSERT INTO UNIQUE_TBL (t) VALUES ('six');
INSERT INTO UNIQUE_TBL (t) VALUES ('seven');
SELECT '' AS five, * FROM UNIQUE_TBL;
DROP TABLE UNIQUE_TBL;
CREATE TABLE UNIQUE_TBL (i int, t text,
UNIQUE(i,t));
INSERT INTO UNIQUE_TBL VALUES (1, 'one');
INSERT INTO UNIQUE_TBL VALUES (2, 'two');
INSERT INTO UNIQUE_TBL VALUES (1, 'three');
INSERT INTO UNIQUE_TBL VALUES (1, 'one');
INSERT INTO UNIQUE_TBL VALUES (5, 'one');
INSERT INTO UNIQUE_TBL (t) VALUES ('six');
SELECT '' AS five, * FROM UNIQUE_TBL;
DROP TABLE UNIQUE_TBL;
QUERY: CREATE TABLE DEFAULT_TBL (i int DEFAULT 100,
x text DEFAULT 'vadim', f float8 DEFAULT 123.456);
x text DEFAULT 'vadim', f float8 DEFAULT 123.456);
QUERY: INSERT INTO DEFAULT_TBL VALUES (1, 'thomas', 57.0613);
QUERY: INSERT INTO DEFAULT_TBL VALUES (1, 'bruce');
QUERY: INSERT INTO DEFAULT_TBL (i, f) VALUES (2, 987.654);
QUERY: INSERT INTO DEFAULT_TBL (x) VALUES ('tgl');
QUERY: INSERT INTO DEFAULT_TBL (x) VALUES ('marc');
QUERY: INSERT INTO DEFAULT_TBL VALUES (3, null, 1.0);
QUERY: SELECT '' AS four, * FROM DEFAULT_TBL;
four| i|x | f
QUERY: SELECT '' AS five, * FROM DEFAULT_TBL;
five| i|x | f
----+---+------+-------
| 1|thomas|57.0613
| 1|bruce |123.456
| 2|vadim |987.654
|100|tgl |123.456
|100|marc |123.456
| 3| | 1
(5 rows)
QUERY: CREATE SEQUENCE DEFAULT_SEQ;
QUERY: CREATE TABLE DEFAULTEXPR_TBL (i1 int DEFAULT 100 + (200-199) * 2,
i2 int DEFAULT nextval('default_seq'));
i2 int DEFAULT nextval('default_seq'));
QUERY: INSERT INTO DEFAULTEXPR_TBL VALUES (-1, -2);
QUERY: INSERT INTO DEFAULTEXPR_TBL (i1) VALUES (-3);
QUERY: INSERT INTO DEFAULTEXPR_TBL (i2) VALUES (-4);
......@@ -35,8 +35,8 @@ QUERY: CREATE TABLE error_tbl (i int DEFAULT (100, ));
WARN:parser: parse error at or near ","
QUERY: CREATE TABLE error_tbl (b1 bool DEFAULT 1 < 2);
WARN:boolean expressions not supported in DEFAULT
QUERY: CREATE TABLE CHECK_TBL (x int)
CONSTRAINT CHECK_CON CHECK (x > 3);
QUERY: CREATE TABLE CHECK_TBL (x int,
CONSTRAINT CHECK_CON CHECK (x > 3));
QUERY: INSERT INTO CHECK_TBL VALUES (5);
QUERY: INSERT INTO CHECK_TBL VALUES (4);
QUERY: INSERT INTO CHECK_TBL VALUES (3);
......@@ -46,36 +46,53 @@ WARN:ExecAppend: rejected due to CHECK constraint check_con
QUERY: INSERT INTO CHECK_TBL VALUES (6);
QUERY: INSERT INTO CHECK_TBL VALUES (1);
WARN:ExecAppend: rejected due to CHECK constraint check_con
QUERY: SELECT '' AS three, * FROM CHECK_TBL;
three|x
-----+-
|5
|4
|6
(3 rows)
QUERY: CREATE SEQUENCE CHECK_SEQ;
QUERY: CREATE TABLE CHECK2_TBL (x int, y text, z int)
CONSTRAINT SEQUENCE_CON CHECK (x > 3 and y <> 'check failed' and x < 8);
QUERY: CREATE TABLE CHECK2_TBL (x int, y text, z int,
CONSTRAINT SEQUENCE_CON
CHECK (x > 3 and y <> 'check failed' and z < 8));
QUERY: INSERT INTO CHECK2_TBL VALUES (4, 'check ok', -2);
QUERY: INSERT INTO CHECK2_TBL VALUES (1, 'x check failed', -2);
WARN:ExecAppend: rejected due to CHECK constraint sequence_con
QUERY: INSERT INTO CHECK2_TBL VALUES (5, 'z check failed', 10);
WARN:ExecAppend: rejected due to CHECK constraint sequence_con
QUERY: INSERT INTO CHECK2_TBL VALUES (0, 'check failed', -2);
WARN:ExecAppend: rejected due to CHECK constraint sequence_con
QUERY: INSERT INTO CHECK2_TBL VALUES (6, 'check failed', 11);
WARN:ExecAppend: rejected due to CHECK constraint sequence_con
QUERY: INSERT INTO CHECK2_TBL VALUES (7, 'check ok', 7);
QUERY: SELECT '' AS two, * from CHECK2_TBL;
two|x|y | z
---+-+--------+--
|4|check ok|-2
|7|check ok| 7
(2 rows)
QUERY: CREATE SEQUENCE INSERT_SEQ;
QUERY: CREATE TABLE INSERT_TBL (x INT DEFAULT nextval('insert_seq'),
y TEXT DEFAULT '-NULL-', z INT DEFAULT -1 * currval('insert_seq') )
CONSTRAINT INSERT_CON CHECK (x >= 3 AND y <> 'check failed' AND x < 8),
CHECK x + z = 0;
y TEXT DEFAULT '-NULL-', z INT DEFAULT -1 * currval('insert_seq'),
CONSTRAINT INSERT_CON CHECK (x >= 3 AND y <> 'check failed' AND x < 8),
CHECK (x + z = 0));
QUERY: INSERT INTO INSERT_TBL VALUES (null, null, null);
WARN:ExecAppend: rejected due to CHECK constraint $2
QUERY: INSERT INTO INSERT_TBL(x,z) VALUES (2, -2);
WARN:ExecAppend: rejected due to CHECK constraint insert_con
QUERY: SELECT * FROM INSERT_TBL;
x|y|z
-+-+-
QUERY: SELECT '' AS zero, * FROM INSERT_TBL;
zero|x|y|z
----+-+-+-
(0 rows)
QUERY: SELECT nextval('insert_seq');
nextval
-------
1
QUERY: SELECT 'one' AS one, nextval('insert_seq');
one|nextval
---+-------
one| 1
(1 row)
QUERY: INSERT INTO INSERT_TBL(y) VALUES ('Y');
......@@ -88,13 +105,13 @@ QUERY: INSERT INTO INSERT_TBL VALUES (5, 'check failed', -5);
WARN:ExecAppend: rejected due to CHECK constraint insert_con
QUERY: INSERT INTO INSERT_TBL VALUES (7, '!check failed', -7);
QUERY: INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
QUERY: SELECT * FROM INSERT_TBL;
x|y | z
-+-------------+--
3|Y |-3
7|-NULL- |-7
7|!check failed|-7
4|-!NULL- |-4
QUERY: SELECT '' AS four, * FROM INSERT_TBL;
four|x|y | z
----+-+-------------+--
|3|Y |-3
|7|-NULL- |-7
|7|!check failed|-7
|4|-!NULL- |-4
(4 rows)
QUERY: INSERT INTO INSERT_TBL(y,z) VALUES ('check failed', 4);
......@@ -103,29 +120,29 @@ QUERY: INSERT INTO INSERT_TBL(x,y) VALUES (5, 'check failed');
WARN:ExecAppend: rejected due to CHECK constraint insert_con
QUERY: INSERT INTO INSERT_TBL(x,y) VALUES (5, '!check failed');
QUERY: INSERT INTO INSERT_TBL(y) VALUES ('-!NULL-');
QUERY: SELECT * FROM INSERT_TBL;
x|y | z
-+-------------+--
3|Y |-3
7|-NULL- |-7
7|!check failed|-7
4|-!NULL- |-4
5|!check failed|-5
6|-!NULL- |-6
QUERY: SELECT '' AS six, * FROM INSERT_TBL;
six|x|y | z
---+-+-------------+--
|3|Y |-3
|7|-NULL- |-7
|7|!check failed|-7
|4|-!NULL- |-4
|5|!check failed|-5
|6|-!NULL- |-6
(6 rows)
QUERY: SELECT nextval('insert_seq');
nextval
-------
7
QUERY: SELECT 'seven' AS one, nextval('insert_seq');
one |nextval
-----+-------
seven| 7
(1 row)
QUERY: INSERT INTO INSERT_TBL(y) VALUES ('Y');
WARN:ExecAppend: rejected due to CHECK constraint insert_con
QUERY: SELECT currval('insert_seq');
currval
-------
8
QUERY: SELECT 'eight' AS one, currval('insert_seq');
one |currval
-----+-------
eight| 8
(1 row)
QUERY: DELETE FROM INSERT_TBL;
......@@ -137,12 +154,12 @@ QUERY: INSERT INTO TEMP VALUES (5, '!check failed', null);
QUERY: INSERT INTO TEMP VALUES (null, 'try again', null);
QUERY: INSERT INTO INSERT_TBL(y) select yd from TEMP;
NOTICE:insert_seq.nextval: sequence was re-created
QUERY: SELECT * FROM INSERT_TBL;
x|y | z
-+-------------+--
4|Y |-4
5|!check failed|-5
6|try again |-6
QUERY: SELECT '' AS three, * FROM INSERT_TBL;
three|x|y | z
-----+-+-------------+--
|4|Y |-4
|5|!check failed|-5
|6|try again |-6
(3 rows)
QUERY: INSERT INTO INSERT_TBL SELECT * FROM TEMP WHERE yd = 'try again';
......@@ -150,13 +167,13 @@ WARN:ExecAppend: rejected due to CHECK constraint $2
QUERY: INSERT INTO INSERT_TBL(y,z) SELECT yd, -7 FROM TEMP WHERE yd = 'try again';
QUERY: INSERT INTO INSERT_TBL(y,z) SELECT yd, -8 FROM TEMP WHERE yd = 'try again';
WARN:ExecAppend: rejected due to CHECK constraint insert_con
QUERY: SELECT * FROM INSERT_TBL;
x|y | z
-+-------------+--
4|Y |-4
5|!check failed|-5
6|try again |-6
7|try again |-7
QUERY: SELECT '' AS four, * FROM INSERT_TBL;
four|x|y | z
----+-+-------------+--
|4|Y |-4
|5|!check failed|-5
|6|try again |-6
|7|try again |-7
(4 rows)
QUERY: DROP TABLE TEMP;
......@@ -175,14 +192,15 @@ x|y | z
6|try again |-6
(4 rows)
QUERY: CREATE TABLE COPY_TBL (x INT, y TEXT, z INT)
CONSTRAINT COPY_CON CHECK (x > 3 AND y <> 'check failed' AND x < 7 );
QUERY: CREATE TABLE COPY_TBL (x INT, y TEXT, z INT,
CONSTRAINT COPY_CON
CHECK (x > 3 AND y <> 'check failed' AND x < 7 ));
QUERY: COPY COPY_TBL FROM '_OBJWD_/data/constro.data';
QUERY: SELECT * FROM COPY_TBL;
x|y |z
-+-------------+-
4|!check failed|5
6|OK |4
QUERY: SELECT '' AS two, * FROM COPY_TBL;
two|x|y |z
---+-+-------------+-
|4|!check failed|5
|6|OK |4
(2 rows)
QUERY: COPY COPY_TBL FROM '_OBJWD_/data/constrf.data';
......@@ -194,3 +212,83 @@ x|y |z
6|OK |4
(2 rows)
QUERY: CREATE TABLE PRIMARY_TBL (i int PRIMARY KEY, t text);
QUERY: INSERT INTO PRIMARY_TBL VALUES (1, 'one');
QUERY: INSERT INTO PRIMARY_TBL VALUES (2, 'two');
QUERY: INSERT INTO PRIMARY_TBL VALUES (1, 'three');
WARN:Cannot insert a duplicate key into a unique index.
QUERY: INSERT INTO PRIMARY_TBL VALUES (4, 'three');
QUERY: INSERT INTO PRIMARY_TBL VALUES (5, 'one');
QUERY: INSERT INTO PRIMARY_TBL (t) VALUES ('six');
WARN:ExecAppend: Fail to add null value in not null attribute i
QUERY: SELECT '' AS four, * FROM PRIMARY_TBL;
four|i|t
----+-+-----
|1|one
|2|two
|4|three
|5|one
(4 rows)
QUERY: DROP TABLE PRIMARY_TBL;
QUERY: CREATE TABLE PRIMARY_TBL (i int, t text,
PRIMARY KEY(i,t));
QUERY: INSERT INTO PRIMARY_TBL VALUES (1, 'one');
QUERY: INSERT INTO PRIMARY_TBL VALUES (2, 'two');
QUERY: INSERT INTO PRIMARY_TBL VALUES (1, 'three');
QUERY: INSERT INTO PRIMARY_TBL VALUES (4, 'three');
QUERY: INSERT INTO PRIMARY_TBL VALUES (5, 'one');
QUERY: INSERT INTO PRIMARY_TBL (t) VALUES ('six');
WARN:ExecAppend: Fail to add null value in not null attribute i
QUERY: SELECT '' AS three, * FROM PRIMARY_TBL;
three|i|t
-----+-+-----
|1|one
|2|two
|1|three
|4|three
|5|one
(5 rows)
QUERY: DROP TABLE PRIMARY_TBL;
QUERY: CREATE TABLE UNIQUE_TBL (i int UNIQUE, t text);
QUERY: INSERT INTO UNIQUE_TBL VALUES (1, 'one');
QUERY: INSERT INTO UNIQUE_TBL VALUES (2, 'two');
QUERY: INSERT INTO UNIQUE_TBL VALUES (1, 'three');
WARN:Cannot insert a duplicate key into a unique index.
QUERY: INSERT INTO UNIQUE_TBL VALUES (4, 'four');
QUERY: INSERT INTO UNIQUE_TBL VALUES (5, 'one');
QUERY: INSERT INTO UNIQUE_TBL (t) VALUES ('six');
QUERY: INSERT INTO UNIQUE_TBL (t) VALUES ('seven');
QUERY: SELECT '' AS five, * FROM UNIQUE_TBL;
five|i|t
----+-+-----
|1|one
|2|two
|4|four
|5|one
| |six
| |seven
(6 rows)
QUERY: DROP TABLE UNIQUE_TBL;
QUERY: CREATE TABLE UNIQUE_TBL (i int, t text,
UNIQUE(i,t));
QUERY: INSERT INTO UNIQUE_TBL VALUES (1, 'one');
QUERY: INSERT INTO UNIQUE_TBL VALUES (2, 'two');
QUERY: INSERT INTO UNIQUE_TBL VALUES (1, 'three');
QUERY: INSERT INTO UNIQUE_TBL VALUES (1, 'one');
WARN:Cannot insert a duplicate key into a unique index.
QUERY: INSERT INTO UNIQUE_TBL VALUES (5, 'one');
QUERY: INSERT INTO UNIQUE_TBL (t) VALUES ('six');
QUERY: SELECT '' AS five, * FROM UNIQUE_TBL;
five|i|t
----+-+-----
|1|one
|2|two
|1|three
|5|one
| |six
(5 rows)
QUERY: DROP TABLE UNIQUE_TBL;
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment