我有一个字符型字段,要求字段值的每一个字符只能为1,A, B,4,Z,6,a中的任意一个,请问在表结构中如何设计这样的约束?

解决方案 »

  1.   

    1.插入之前进行校验
    2.用insert触发器来校验,有字符不在此范围时raise一个exception.
      

  2.   

    alter table tab1 modify colname
    check colname in ('1','A', 'B','4','Z','6','a')大概这样子
      

  3.   

    你在定义表结构的时候,加约束条件就ok。比方:
    create table samp(
         empNo            varchar2(20),
         empName          varchar2(20) CHECK(empName in ('1','A',...,'a')),
         ......
    );或者你是定义了一个表结构,想在修改字段的约束条件的话,比方:
    alter table samp modify(empName varchar2(20) constraint consCheck1 check (empName
    in ('1'...)));你也当然可以做成触发器来检验它,
    create or replace insTrig
    before insert on empName of samp
    for each row
    declare
       str  varchar2(20),
       ...
    begin
       if inserting then
          elsif :new.empName not in ('1',...,'a') then
          ......
          else
              dbms_output.put_line("......");
       end if;
    end instrig;
    /