代码之家  ›  专栏  ›  技术社区  ›  dance2die

一种不使用触发器在表中的两个域之间添加约束的方法?

  •  4
  • dance2die  · 技术社区  · 15 年前

    Client .

    create table Client (
        ClientID    int identity primary key,
        TaxID       varchar(12),
        SSN         varchar(12)
    )
    GO
    


    目前,我通过以下触发器强制执行该规则。

    create trigger trgClient_UniqueTaxIDSSN
        on Client
        after Insert, Update
    as
        --; Check if either TaxID or SSN is not null.
    

    约束

    4 回复  |  直到 15 年前
        1
  •  5
  •   Adam Robinson    15 年前
    ALTER TABLE Client ADD CONSTRAINT ck_TaxIDorSSN CHECK 
        (TaxID is not null or SSN is not null)
    
        2
  •  1
  •   Randy Minder    15 年前

    您应该能够在客户机表上创建一个检查约束来执行此操作。

    http://msdn.microsoft.com/en-us/library/ms188258.aspx
    
        3
  •  1
  •   jlew    15 年前
        4
  •  1
  •   Oded    15 年前

    您可以创建一个 Check constraint 检查任一字段中是否为空:

    ALTER TABLE Client ADD CONSTRAINT cn_TaxIDorSSNnotNULL CHECK 
      (TaxID IS NOT NULL OR SSN IS NOT NULL)