Microsoft SQL约束 - 限制来自禁止站点的驱动程序

时间:2014-10-20 17:24:41

标签: sql-server sql-server-2008 constraints check-constraints

我正在使用Microsoft SQL Server 2008,我需要创建一个约束,如果[驱动程序]不允许来源[发件人]或目的地[收件人],则会阻止创建/更新[Tx]现场。

表:

  • 驱动程序(包含典型的驱动程序信息)
  • 托运人/收货人(来源/目的地网站 - 保留司机往返的位置)
  • DriverForbiddenSite(保留不允许驱动程序的网站)
  • 时间表(保持司机,何时)
  • Tx(交易有源网站{shipper},目的地网站{收货人},货物,时间表)

这是一个查询,将显示违反规则的任何记录:

select * from DriverForbiddenSite dfs
    join Schedule sch on dfs.driverId=sch.driverId
    join Tx tx on sch.scheduleId=tx.scheduleId
    left join Shipper shi on shi.shipperId=tx.shipperId
    left join Consignee con on con.consigneeId=tx.consigneeId
where dfs.transloadLocationId=shi.transloadLocationId or dfs.transloadLocationId=con.transloadLocationId

如果网站上不允许使用驱动程序,最好如何阻止创建Tx?

由于

1 个答案:

答案 0 :(得分:0)

完全归功于拉胡尔。我试图通过使用约束来解决这个问题,而我应该使用触发器。 “而不是插入”和“代替更新”触发器将允许我在插入/更新Tx记录之前检查Tx上是否允许驱动程序。

感谢Rahul,请随意输入您自己的答案,我会接受。