Tôi đang cố tạo trình kích hoạt cơ sở dữ liệu cơ bản có điều kiện xóa các hàng khỏi database1.table1 khi một hàng từ database2.table2 bị xóa. Tôi là người mới khởi xướng và hy vọng tìm hiểu cách tốt nhất để thực hiện điều này. Đây là những gì tôi có cho đến nay. Gợi ý?Máy chủ SQL BẬT DELETE Kích hoạt
CREATE TRIGGER sampleTrigger
ON database1.dbo.table1
FOR DELETE
AS
IF EXISTS (SELECT foo
FROM database2.dbo.table2
WHERE id = deleted.id
AND bar = 4)
-- If there is a row that exists in database2.dbo.table2
-- matching the id of the deleted row and bar=4, delete
-- it as well.
-- DELETE STATEMENT?
GO
Bạn cần để đưa vào tài khoản mà kích hoạt được kích hoạt ** một lần cho mỗi tuyên bố ** (và ** NOT ** một lần pe r hàng như nhiều devs tin) và rằng bảng 'Deleted' giả có thể chứa ** nhiều hàng ** (nếu câu lệnh của bạn đã xóa nhiều hàng) –
@marc_s - Trong hệ thống, chỉ có một hàng có thể bị xóa cùng một lúc (ứng dụng front-end). Bạn có thể giải thích về ý của bạn không. Nó đơn giản như thay đổi 'WHERE id = deleted.id' thành' WHERE id IN (SELECT id FROM deleted) '? –
@ShawnH. Vâng, nó phải là đơn giản. Tôi nghĩ Marc có nghĩa là nếu bằng cách nào đó xóa khối lượng được gọi từ đâu đó thì kích hoạt sẽ chỉ cháy một lần cho toàn bộ câu lệnh chứ không phải trên mỗi hàng, do đó, sử dụng 'IN' nên sắp xếp theo một trong hai cách. – Bridge