から削除しますProducts
テーブルでは、その商品IDを持つすべてのオーダーラインを01から最初に削除する必要がありますテーブル。SQLトリガーは、私は2つのテーブルを持っている別のテーブル
だから私はそれを行うためのトリガを書いた:
CREATE TRIGGER [dbo].[atbl_Sales_Products_DTrig]
ON [dbo].[atbl_Sales_Products]
FOR DELETE
AS
BEGIN
DELETE FROM atbl_sales_OrdersLines
WHERE ProductID = (SELECT ProductID FROM deleted)
END
しかし、私はProductsテーブルからフォームに削除しますかしようとすると、それはまだ書かれています:
行が関連してあります。この行を削除する前に削除する必要があるテーブル(Sales OrdersLines)
私はここで間違っていますか?要求ごととして
EDIT:主な制約:
[dbo].[atbl_Sales_OrdersLines] WITH CHECK ADD CONSTRAINT
[FK_atbl_Sales_OrdersLines_atbl_Sales_Products] FOREIGN KEY([ProductID])
REFERENCES [dbo].[atbl_Sales_Products] ([ProductID])
[カスケード削除](https://stackoverflow.com/a/6260736/300836)を使用しない理由はありますか? –
はい、これが問題を解決することがわかります。しかし、私は割り当てのためにこれをやっています。それはトリガで解決する必要があります。 – Benua
トリガー(AFTERトリガーと呼ばれます)は、テーブルの削除操作の後に実行されます。したがって、エラーメッセージです。あなたが必要とするものは 'INSTEAD OF'トリガーですが、これはちょっと難解です。記事全文を読む:https://docs.microsoft.com/en-us/sql/relational-databases/triggers/dml-triggers – Alex