--------------------------------------------------------------------------------------------------------------------------------
01 DROP TABLE lw_bin;
02 create table lw_bin
03 (
04 XH INTEGER not null generated by default as identity,
05 GJ_DM CHAR(3) not null,
06 GJ_MC VARCHAR(100) not null,
07 GJ_JC VARCHAR(80) not null,
08 XYBZ CHAR(1) not null,
09 primary key (XH)
10 );
11 comment on table TMP_ZYGJ is '主要国家';
12 comment on column TMP_ZYGJ.XH is '报表序号';
13 comment on column TMP_ZYGJ.GJ_DM is '国家代码';
14 comment on column TMP_ZYGJ.GJ_MC is '国家名称';
15 comment on column TMP_ZYGJ.GJ_JC is '国家简称';
16 comment on column TMP_ZYGJ.XYBZ is '选用标志';
--------------------------------------------------------------------------------------------------------------------------------
http://hi.baidu.com/zh_junzheng/blog/item/406c61237c80cc4c9358076b.html
DB2_几个带约束的建表语句
1.CREATE TABLE EMPLOYEE
EMPNO INTGRATE NOT NULL PRIMARY KEY,
JOB VARCHAR(10) CONSTRAINT CHECH_JOB
CHECK(JOB IN ('Engineer','Sales','Manager')),
CONSTRAINT CHECK_AGE_SALRY CHECK(NOT(AGE<30 AND SALARY>6000))
)
2.CREATE TABLE EMPDATA
EMPNO INTGRATE NOT NULL,
SEX CHAR(1) NOT NULL CONSTRAINT SEXOK CHECK(SEX IN('M','F')
NOT ENFORCED //DB2不要在插入或更新时强制执行这个列的检查
ENABLE QUERY OPTIMIZATION, //DB2在对该表运行SELECT语句时使用它
SALARY INTGRATE NOT NULL,
CONSTRAINT SALARYOK CHECK (SALARY BETWEEN 0 AND 100000)
NOT ENFORCED
ENABLE QUERY OPTIMIZATION
--------------------------------------------------------------------------------------------------------------------------------
DROP TABLE RUZ_F00000010;
CREATE TABLE RUZ_F00000010(
YM CHAR (6) NOT NULL,
HW_ASR_SAGYO_KBN CHAR (2) NOT NULL,
PRG_ID CHAR (20) NOT NULL ,
LGIN_USR_ID CHAR (20) ,
DATA_KOSIN_KAISU DECIMAL (7, 0) NOT NULL WITH DEFAULT 0 ,
PRIMARY KEY(YM)
--------------------------------------------------------------------------------------------------------------------------------
--------------------------------------------------------------------------------------------------------------------------------
DROP TABLE xMainData
CREATE TABLE xMainData
PN_NO VarChar(20) NOT NULL WITH DEFAULT '',
PO_SHIPDATE DATE,
PO_SHIPQTY INTEGER,
DAILY_DATE DATE NOT NULL,
CUT_QTY INTEGER,
JUJUBE_QTY INTEGER,
WASH_QTY INTEGER,
PACK_QTY INTEGER,
CHECK_QTY INTEGER,
---------------PRIMARY KEY (PN_NO,DAILY_DATE)----------------
Constraint pkxMainData Primary Key (PN_NO,DAILY_DATE)
------------------------------------------------------------------------------------
2010/07/31:查错提示:
怀疑 pkxMainData 主键在 dbgrid 中 post 不起作用,
原来是 DBgrid.Datasource.Dataset.CachedUpdates = True; 设为 False; 搞定.
SELECT * FROM xMainData
------------------------------------------------------------------------------------
存在性判啵
SELECT * FROM SYSIBM.SYSTABLES WHERE NAME=UPPER('xMainData')
create table GSJIT.JIT_PNLINEPLAN
PN_NO CHAR(20) not null,
JIT_NO SMALLINT not null,
DOZ_QTY SMALLINT,
PCS_QTY SMALLINT,
DAY_QTY SMALLINT,
PROD_MEN1 SMALLINT,
PROD_MEN2 SMALLINT,
PROD_MEN3 SMALLINT,
DOZ_PRICE DECIMAL(6,2),
DAY_PAY DECIMAL(6,2),
MADER VARCHAR(20),
MADE_DATE DATE,
TIME_STAMP TIMESTAMP Default Current TIMESTAMP,
Constraint PK_JIT_PNLINEPLAN Primary Key (PN_NO,JIT_NO)
in USERSPACE1
index in USERSPACE1
long in USERSPACE1
------------------------------------------------------------------------------------
http://soft.zdnet.com.cn/software_zone/2008/0922/1143793.shtml
--------------------------------------------------------------------------------------------------------------------------------
一个临时表已经存在数据,请问该如何把它其中一个列(varchar类型)变成一个包含唯一值的列?也就是往这个列写入唯一值数据?
另外,临时表新建的时候好像不能像SQL SERVER一样通过select into #temp from tbl方式创建,这样就必须先建好一个临时表然后往里面插数据了? 对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 回复次数:6 liyan93834183 (奕羲)
等 级:
6
#1楼 得分:0回复于:2009-10-15 08:00:59临时表没有主键的概念,所以无法控制值唯一,要想控制只能通过语句控制了
DECLAREGLOBALTEMPORARYTABLETABLE_NAME
AS(FULLSELECT)DEFINITIONONLY
EXCLUDINGIDENTITYCOLUMNATTRIBUTES
ONCOMMITDELETEROWS
NOTLOGGED
第二行规定临时表的列的定义.
第四行规定如果没有打开WITHGOLD光标,将会删除表的所有行.
例如:
DECLAREGLOBALTEMPORARYTABLEDEC_BSEMPMS
AS(SELECT*FROMBSEMPMS)DEFINITIONONLY
EXCLUDINGIDENTITYCOLUMNATTRIBUTES
ONCOMMITDELETEROWS
NOTLOGGED
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:一个貌似高深的MDX计算问题(价格指数)
spoky
(夜游魂)
等 级:
#2楼 得分:0回复于:2009-10-15 08:47:10谢谢liyan93834183,请问该如何通过语句控制呢?因为刚接触DB2的存储过程写法,因此不太了解。
我现在是使用like tablename的方式来建一个空表结构,然后再往里面insert into data,因此无法实现
sql server里面的select *,identity(int,1,1) as ind into #temp1 from tbl1,这样就可以在创建临时表的时候既插入了数据又增加了唯一值。不知道DB2中该如何现实?谢谢!
!
引用 1 楼 liyan93834183 的回复:
创建临时表的方法
DECLAREGLOBALTEMPORARYTABLETABLE_NAME
AS(FULLSELECT)DEFINITIONONLY
EXCLUDINGIDENTITYCOLUMNATTRIBUTES
ONCOMMITDELETEROWS
NOTLOGGED
第二行规定临时表的列的定义.
第四行规定如果没有打开WITHGOLD光标,将会删除表的所有行.
例如:
DECLAREGLOBALTEMPORARYTABLEDEC_BSEMPMS
AS(SELECT*FROMBSEMPMS)DEFINITIONONLY
EXCLUDINGIDENTITYCOLUMNATTRIBUTES
ONCOMMITDELETEROWS
NOTLOGGED
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:vfp导出excel的方法探讨 liyan93834183 (奕羲)
等 级:
6
#3楼 得分:0回复于:2009-10-15 09:32:38创建一个序列
SQL codecreate sequence rows increment by 1 start with 1
select column,nextval for rows from tbname
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:Sybase ASA(SQL Anywhere)相关电子书籍文档及其他资源合集整理
yangxiao_jiang
(东北大胖)
等 级:
#4楼 得分:0回复于:2009-10-15 09:35:29楼上正解,创建序列,每次去序列取值,可以保证唯一。
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:Sybase ASE数据库相关电子书及其它资源合集
spoky
(夜游魂)
等 级:
#5楼 得分:0回复于:2009-10-15 11:32:09我在存储过程中创建了一个临时表,然后插入数据,并新建sequence,不过在创建该存储过程时提示错误:
错误提示:
[IBM][CLI Driver][DB2/NT] SQL0104N 在 " " 之后发现意外的标记 "create sequence myuserid.rows increment by 1 start with 1;"。期望的标记可能包括:"<space>"。
LINE NUMBER=67. SQLSTATE=42601
========================
DECLARE GLOBAL TEMPORARY TABLE session.temp1
LIKE myuserid.tbl1
ON COMMIT DELETE ROWS
WITH REPLACE
NOT LOGGED
IN myuseridspace;
insert into session.temp1 select * from myuserid.tbl1;
create sequence myuserid.rows increment by 1 start with 1;
update SESSION.temp1 set col1 = (select nextval for myuserid.rows from myuserid.tbl1);
对我有用[0] 丢个板砖[0] 引用 举报 管理 TOP 精华推荐:查询一个字符串的字段是否仅仅只有数值型的数据的问题
yangxiao_jiang
(东北大胖)
等 级:
#6楼 得分:0回复于:2009-10-15 14:44:04我没有在存储过程里创建过sequence,你可以先创建,然后在存储过程里面调用。
--------------------------------------------------------------------------------------------------------------------------------