logo 西林@生存 - 骑猪闯天下!
补习:表的约束条件
2006-11-13 16:03:00 By:xling

做VB,或DELPHI的(etc.),基本上都有一个共性,那就是把对数据合法性的检查全都放到VB,DELPHI(etc.)的代码里。对数据库应用程序来说,不去充分的运用Trigger,CONSTRAINT,如果哪个用户进到数据库里,随便修改一条数据,就有可能置应用程序于混乱中。这一点我深有体会,很多小软件公司也不会对这方面给予重视,因为他们招程序员时是这样要求的:熟悉SQL,这里的SQL大部分指的就是DML语言(SELECT,INSERT etc.),偶而有要求会Trigger,Procedure(Function)的,也不过是用来做为一种考核你会不会SQL的手段!

由于Oracle过于庞大,以致于俺的好多工作都是要抛开程序界面,在数据库上直接操作的,最常碰到的就是触发器和存储过程,错误的操作,是不会被数据所接受的。

对于表的约束条件,俺也不是太懂,今天大致翻了一下书,原来这部分也是很简单的。

UNIQUE 唯一键
PRIMARY KEY 主键
NOT NULL
CHECK 检查,必须符合指定的条件
FOREIGN KEY 外键,用来创建一个与参考表之间的关系

语法:

CONSTRAINT constraint_name UNIQUE(column)
CONSTRAINT constraint_name PRIMARY KEY(column)
NOT NULL
CONSTRAINT constraint_name CHECK(condition)
CONSTRAINT constraint_name FOREIGN KEY(column) REFERENCING table_name(column)

ALTER TABLE table_name ADD CONSTRAINT constraint_name <UNIQUE | PRIMARY KEY | CHECK | FOEIGN KEY> (column) [REFERENCING table_name(column)]
ALTER TABLE table_name <ENABLE | DISABLE> constraint_name
ALTER TABLE table_name DROP CONSTRAINT constraint_name

举例:

CREATE TABLE X_APP_GUIDS(
    GUID NUMBER,
    TABLE_NAME VARCHAR2(50),
    UPD_DATE DATE,
    UPD_NAME VARCHAR2(20),
    USE_FLAG VARCHAR2(1) DEFAULT 'Y'
)
ALTER TABLE X_APP_GUIDS ADD CONSTRAINT USE_FLAG_CK CHECK(USE_FLAG IN ('Y','N'))

INSERT INTO X_APP_GUIDS(GUID,TABLE_NAME,USE_FLAG) VALUES (1,'AA','S');


报以下错误:
ORA-02290: 违反检查约束条件 (XLING.USE_FLAG_CK)


 

CREATE TABLE X_GNO_RULE(
    GUID NUMBER,
    SLIP_TYPE VARCHAR2(10),
    SECTION_SEQ NUMBER,
    SECTION_CODE VARCHAR2(10),
    SECTION_STRING VARCHAR2(100),
    COMP_NO VARCHAR2(20),
)
ALTER TABLE X_GNO_RULE ADD (UPD_DATE DATE,UPD_NAME VARCHAR2(20))
ALTER TABLE X_GNO_RULE ADD CONSTRAINT SLIP_TYPE_COMP_NO_PK PRIMARY KEY(SLIP_TYPE,COMP_NO)
转我的贴,写你的名,是一种可耻的行为!请不要让我BS你!
阅读全文 | 回复(0) | 引用通告 | 编辑

发表评论:

    密码:
    主页:
    标题:
    页面数据正在载入...
<<  < 2007 - 11 >  >>
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30
Placard
1,長江後浪推前浪,前浪死在沙灘上!
2,有了钱的男人,才是真正的男人...
3,不要以为把你的小JJ埋进土里,你就rape了整个地球;不要以为把你的小JJ朝向天空,你就rape了整个宇宙!
Logon System
Search
Info about this blog
Others
myDream
bxna 京ICP备05002321号