2014-10-20 32 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,隨時輸入您自己的答案,我會接受而不是。

相關問題