如题同样内容的一个CHECK约束定义在列级别和表级别有什么区别?

解决方案 »

  1.   

    请先说一下什么样的check约束可以定义在表级别同时又可以定义在列级别,用了oracle这么多年,没考虑过这个问题
      

  2.   

    只见过定义在列级别的check约束,没见过定义在表级别的
      

  3.   

    create table bonus(
    emp_id varchar2(20) not null,
    salary number(9,2),
    bonus number(9,2),
    CONSTRAINT CK_BONUS CHECK(BONUS>0));
    create table bonus(
    emp_id varchar2(20) not null,
    salary number(9,2),
    bonus number(9,2) CHECK(BONUS>0));
      

  4.   

    文档上说可以在column level or table level上创建CHECK约束难道只是语法不一样而已?
      

  5.   

    alter table employees add constraint emp_pk primary key (empno) 
    alter table employees add constraint emp_pk primary key (empno,deptno) 
      

  6.   

    你意思就是在这个情况下,所谓的table level 和column level只是语法不同而已?
      

  7.   


    这两个建表语句是一样的,第一个 写法更好些,便于以后随时可以drop此约束
    建立constraint约束都是在建表语句的末尾