mirror of
https://github.com/chaisql/chai.git
synced 2025-09-26 19:51:21 +08:00
106 lines
2.3 KiB
SQL
106 lines
2.3 KiB
SQL
-- setup:
|
|
CREATE TABLE test(a int primary key);
|
|
|
|
-- test: column constraints are updated
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int DEFAULT 0;
|
|
SELECT name, sql FROM __chai_catalog WHERE type = 'table' AND name = 'test';
|
|
/* result:
|
|
{
|
|
name: 'test',
|
|
sql: 'CREATE TABLE test (a INTEGER NOT NULL, b INTEGER DEFAULT 0, CONSTRAINT test_pk PRIMARY KEY (a))'
|
|
}
|
|
*/
|
|
|
|
-- test: default value is updated
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int DEFAULT 0;
|
|
SELECT * FROM test;
|
|
/* result:
|
|
{
|
|
a: 1,
|
|
b: 0
|
|
}
|
|
{
|
|
a: 2,
|
|
b: 0
|
|
}
|
|
*/
|
|
|
|
-- test: not null alone
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int NOT NULL;
|
|
-- error: NOT NULL constraint error: [b]
|
|
|
|
-- test: not null with default
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int NOT NULL DEFAULT 10;
|
|
SELECT * FROM test;
|
|
/* result:
|
|
{
|
|
a: 1,
|
|
b: 10,
|
|
}
|
|
{
|
|
a: 2,
|
|
b: 10
|
|
}
|
|
*/
|
|
|
|
-- test: unique
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int UNIQUE;
|
|
SELECT * FROM test;
|
|
/* result:
|
|
{
|
|
a: 1,
|
|
b: null
|
|
}
|
|
{
|
|
a: 2,
|
|
b: null
|
|
}
|
|
*/
|
|
|
|
-- test: unique with default: with data
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int UNIQUE DEFAULT 10;
|
|
-- error: UNIQUE constraint error: [b]
|
|
|
|
-- test: unique with default: without data
|
|
ALTER TABLE test ADD COLUMN b int UNIQUE DEFAULT 10;
|
|
INSERT INTO test VALUES (1), (2);
|
|
-- error: UNIQUE constraint error: [b]
|
|
|
|
-- test: primary key: with data
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int PRIMARY KEY;
|
|
-- error: multiple primary keys for table "test" are not allowed
|
|
|
|
-- test: primary key: without data
|
|
ALTER TABLE test ADD COLUMN b int PRIMARY KEY;
|
|
INSERT INTO test VALUES (1, 10), (2, 20);
|
|
SELECT a, b FROM test;
|
|
-- error: multiple primary keys for table "test" are not allowed
|
|
|
|
-- test: primary key: with default: with data
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b int PRIMARY KEY DEFAULT 10;
|
|
-- error: multiple primary keys for table "test" are not allowed
|
|
|
|
-- test: primary key: with default: without data
|
|
ALTER TABLE test ADD COLUMN b int PRIMARY KEY DEFAULT 10;
|
|
-- error:
|
|
|
|
-- test: bad syntax: no type
|
|
INSERT INTO test VALUES (1), (2);
|
|
ALTER TABLE test ADD COLUMN b;
|
|
-- error:
|
|
|
|
-- test: bad syntax: no column name
|
|
ALTER TABLE test ADD COLUMN;
|
|
-- error:
|
|
|
|
-- test: bad syntax: missing column keyword
|
|
ALTER TABLE test ADD a int;
|
|
-- error: |