2014-10-20 72 views
-1

我正在使用Microsoft SQL Server 2008,我需要创建一个约束,以防止[Tx]被创建/更新,如果[Driver]不允许来源[托运人]或目的地[收件人]网站。Microsoft SQL Constraint - 限制驱动程序来自禁止的站点

表:

  • 驱动程序(拥有典型的驱动程序信息)
  • 发货人/收货人(源/目标站点 - 保存驱动程序从进入位置/把)
  • DriverForbiddenSite(持有网站司机是不允许的)
  • 附表(保持司机,当)
  • Tx(交易有源站点{托运人},目标站点{委托EE},货运,调度)

下面是一个查询,将显示与该规则冲突的任何记录:

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的被创建如果驱动程序是不允许的在网站上?

谢谢

+0

是的。我相信这个问题应该对你有意义。 – TomTom 2014-10-20 17:29:30

+0

对不起,你不明白这个问题。我需要帮助创建一个约束。我欢迎您对您不明白的内容提供反馈意见? – 2014-10-20 17:33:20

+1

为相同的目的定义一个而不是触发器。 – Rahul 2014-10-20 17:50:01

回答

0

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

谢谢Rahul,随时输入您自己的答案,我会接受而不是。