Khi tạo tập lệnh SQL để tạo trình kích hoạt trên bảng, tôi muốn kiểm tra xem trình kích hoạt chưa tồn tại trước khi tạo. Nếu không, tập lệnh không thể chạy nhiều lần.SQL: Tại sao CREATE TRIGGER cần đứng trước GO
Vì vậy, tôi đã thêm một tuyên bố để trước tiên kiểm tra xem trình kích hoạt có tồn tại không. Sau khi thêm câu lệnh đó, câu lệnh CREATE TRIGGER không còn hoạt động nữa.
IF NOT EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
BEGIN
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
END
GO
Điều này cho phép:
Msg 156, Level 15, State 1, Line 5
Incorrect syntax near the keyword 'TRIGGER'.
Các giải pháp sẽ được thả cò hiện có và sau đó tạo mới:
IF EXISTS (SELECT name FROM sysobjects
WHERE name = 'tr_MyTable1_INSERT' AND type = 'TR')
DROP TRIGGER tr_MyTable1_INSERT
GO
CREATE TRIGGER tr_MyTable1_INSERT
ON MyTable1
AFTER INSERT
AS
BEGIN
...
END
GO
Câu hỏi của tôi là: w hy là ví dụ đầu tiên thất bại? Điều gì là sai với việc kiểm tra kích hoạt tồn tại?
Sự sụt giảm sẽ trình bày cùng một vấn đề như tạo? – JeffO