Tsql 如何确保不同表中的两列具有相同的值

Tsql 如何确保不同表中的两列具有相同的值,tsql,constraints,Tsql,Constraints,需要什么T-SQL DDL来创建一个约束,以确保一个表中的列中的值与另一个表中的列中的值相同 我想在不使用PK-FK关系的情况下执行此操作。 本文末尾的T-SQLDDL是我试图解决的一般问题的一个例子 在本例中,我想知道如何在两个表之间添加相等约束,以确保列中的值集: “PersonMayDriveCar.personName” 始终等于列中的值集 “DriverLicense.personName” 我发现您希望在不使用外键的情况下保持两个表之间的引用完整性 根据我过去的经验,我用触发器解决了

需要什么T-SQL DDL来创建一个约束,以确保一个表中的列中的值与另一个表中的列中的值相同

我想在不使用PK-FK关系的情况下执行此操作。 本文末尾的T-SQLDDL是我试图解决的一般问题的一个例子

在本例中,我想知道如何在两个表之间添加相等约束,以确保列中的值集: “PersonMayDriveCar.personName” 始终等于列中的值集 “DriverLicense.personName”


我发现您希望在不使用外键的情况下保持两个表之间的引用完整性

根据我过去的经验,我用触发器解决了这样一个问题。 因此,您可以在DriverLicense表上创建一个触发器,以确保在PersonMayDriveCar表中不存在插入的DriverLicense文件时,DriverLicense表中的任何插入或更新都将回滚

您可以通过以下内容查看完整示例:

遵守惯例:

  • 使用FK。就这么简单
  • 不要将这些表与FK链接在一起,因为它们都是
  • 创建一个
    person
    表,它是其他两个表的父表
  • 试试这个:

    Person
    - id (PK)
    - name
    - other columns
    
    PersonMayDriveCar
    - person_id (FK to person)
    - other columns
    
    DriverLicense
    - person_id (FK to person)
    - other columns
    

    谢谢P.B.UDAY-你的建议似乎正是我想要的。。。。或者将PersonMayDriveCar更改为与驾驶执照相关,而不是与某人相关-这样,如果一个人拥有多个公民身份(每个公民都有一张驾驶执照),则该人可以驾驶一辆有一张驾驶执照的车辆,但另一辆有另一张驾驶执照(即,在一个国家,此人被授权驾驶摩托车,但在另一个国家,此人没有被授权驾驶摩托车)。Zohar和Bohemian:你们都在改变问题,以适应你们的解决方案。请参阅聊天部分中的我的评论。评论不用于长时间讨论;此对话已经结束。
    Person
    - id (PK)
    - name
    - other columns
    
    PersonMayDriveCar
    - person_id (FK to person)
    - other columns
    
    DriverLicense
    - person_id (FK to person)
    - other columns