⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 modifycolumn.sql

📁 derby database source code.good for you.
💻 SQL
字号:
-- Testing changing the length of a column.-- Also testing the new syntax for generated column spec and identity attributecreate table alltypes (i int, tn int, s smallint, l bigint,				c char(10), v varchar(50), lvc long varchar,				nc char(10), nvc varchar(10),				d double precision, r real, f float,				dt date, t time, ts timestamp,				b char(2) for bit data, bv varchar(2) for bit data, lbv long varchar for bit data,				dc decimal(5,2), n numeric(8,4), o bigint);-- lets start with negative tests first.alter table alltypes alter c set data type char(20);alter table alltypes alter b set data type char(4) for bit data;alter table alltypes alter nc set data type char(20);alter table alltypes alter dc set data type decimal (8,2);alter table alltypes alter n set data type numeric (12,8);alter table alltypes alter c set data type varchar(10);alter table alltypes alter b set data type varchar(2) for bit data;alter table alltypes alter dc set data type numeric(8,2);alter table alltypes alter tn set data type int;alter table alltypes alter v set data type varchar(1);alter table alltypes alter v set data type varchar(49);alter table alltypes alter bv set data type varchar(1) for bit data;alter table alltypes alter bv set data type varchar(2) for bit data;alter table alltypes alter nvc set data type varchar(0);alter table alltypes alter nvc set data type varchar(9);drop table alltypes;create table t0 (i int not null, v varchar(1) not null, constraint pk primary key(v,i));-- this should work. primary key constraint has no referencing fkey-- constraints.alter table t0 alter v set data type varchar(2);create table t1 (i int, v varchar(2), constraint fk foreign key  (v,i) references t0(v,i));alter table t0 alter v set data type varchar(3);-- should fail; can't muck around with fkey constraints.alter table t1 alter v set data type varchar(3);drop table t1;drop table t0;-- do the same thing over again with a unique key constraint this time.create table t0 (i int not null, v varchar(1) not null, constraint  uq unique(v,i));-- this should work. unique constraint has no referencing fkey-- constraints.alter table t0 alter v set data type varchar(2);create table t1 (i int, v varchar(2), constraint fk foreign key  (v,i) references t0(v,i));-- this should fail-- someone is referencing me.alter table t0 alter v set data type varchar(3);drop table t1;drop table t0;---- test that we can't alter a column with an autoincrement default to nullablecreate table t1(a int generated always as identity (start with 1, increment by 1));insert into t1 values(DEFAULT);select * from t1;-- this should failalter table t1 modify a null;insert into t1 values(DEFAULT);select * from t1;drop table t1;-- lets get to positive tests.create table t1 (vc varchar(1) not null, nvc varchar(1) not null, bv varchar(1) for bit data not null);alter table t1 add constraint uq unique (vc, nvc, bv);insert into t1 values ('p', 'p', x'01');insert into t1 values ('pe', 'p', x'01');alter table t1 alter vc set data type varchar(2);insert into t1 values ('pe', 'p', x'01');insert into t1 values ('pe', 'pe', x'01');alter table t1 alter nvc set data type varchar(2);insert into t1 values ('pe', 'pe', x'01');insert into t1 values ('pe', 'pe', x'1000');alter table t1 alter bv set data type varchar(2) for bit data;insert into t1 values ('pe', 'pe', x'1000');-- make sure constraints aren't lost due to an alter.insert into t1 values ('pe','pe', x'01');-- do some selects to ensure consistency of data.select * from t1 where vc='pe';select * from t1 where vc='pe';alter table t1 alter vc set data type varchar(3);select * from t1 where vc='pe';select * from t1 where vc='pe';-- clean updrop table t1;-- DERBY-882-- ALTER TABLE to increase size of varchar could convert a non-null column to nullable-- before fix for DERBY-882create table a (id integer not null, name varchar(20) not null, primary key(name)); insert into a values (1, 'abc'); -- Should failinsert into a values (2, null); alter table a alter name set data type varchar(50);insert into a values (3, 'hijk'); -- Used to pass before the fixinsert into a values (4, null);select * from a; drop table a;-- Now test the otherway, nullable column to start withcreate table a (id integer not null, name varchar(20)); insert into a values (1, 'abc'); insert into a values (2, null); alter table a alter name set data type varchar(50);insert into a values (3, 'hijk'); insert into a values (4, null);select * from a; drop table a;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -