现在两个表:仓库表(仓库号,仓库名),职工表(职工号,职工名);
仓库表中仓库号为6个字符;
职工表职工号为8字符,如何约束为:前六位参照仓库表的仓库号,后2位为数字字符。

解决方案 »

  1.   

    create trigger tri_name on 职工表
    for insert ,update 
    as
    if exists(select 1 
              from 职工表 
                where left(职工号,6) not in (select 仓库号
                                                from 仓库表))
    rollback
      

  2.   

    --更正
    create trigger tri_name on 职工表
    for insert ,update 
    as
    if exists(select 1 
              from inserted 
                where left(职工号,6) not in (select 仓库号
                                                from 仓库表))
    rollback
      

  3.   

    create trigger tr_test on 职工表
    for insert,update
    as
    if not exists(select 1 from inserted a join 仓库表 b on a.职工号 like b.仓库号+'[0-9][0-9]')
    begin
       raiserror('您输入的职工号不符规范,请重新输入!',16,1)
       rollback
    end
    go
      

  4.   

    create trigger tr_test on职工表
    for insert,update
    as
    if not exists(select 1 from inserted a join 仓库表 b on a.职工表 like b.仓库号+'[0-9][0-9]')
    begin
         raiseeeor('你输入的职工号不符合规范,请重新输入!',16,1)
    rollback
    end
    go