FOR INSERT & INSTEAD trong trigger, sql server?

mình có 1 câu hỏi
viết trigger
https://daynhauhoc.s3-ap-southeast-1.amazonaws.com/original/2X/f/f3ee7a41f191e6518293912153e20fdbd6a0381a.JPG

bảng VATTU

mình làm như sau

USE KHACHHANG
GO
CREATE TRIGGER TRIGGER_TEST
ON VATTU
FOR INSERT
AS
BEGIN
	IF EXISTS (SELECT * FROM inserted WHERE inserted.TENVT IN
	(
	SELECT TENVT
	FROM VATTU
	))
	BEGIN
		PRINT N'Không được chèn 2 vật tư có cùng tên'
		ROLLBACK TRANSACTION 
	END
END

Làm theo cách trên
khi mình chèn dữ liệu

USE KHACHHANG
GO
INSERT INTO VATTU(MAVT, TENVT) VALUES ('0000','XI MANG')


USE KHACHHANG
    GO
    INSERT INTO VATTU(MAVT, TENVT) VALUES ('0000','AA')

dù tên VATTU đã tồn tại hay chưa tồn tại thì đề bị lỗi

Không được chèn 2 vật tư có cùng tên'

theo mình tìm hiểu thì FOR INSERT nó sẽ chèn dữ liệu trước khi kiểm tra trigger

mô tả

nên mình thử INSTEAD OF INSERT thay cho FOR INSERT thì k bị báo lỗi nữa, và chạy query insert thành công
khi thêm dữ liệu
sql báo
…arow(s) affected …

nhưng khi xem trong bảng VATTU thì dữ liệu đã chèn k có, vẫn y nguyên như khi chưa chèn, mình đã refresh bảng nhưng vẫn k có

lỗi ở đâu nhỉ
xincamon

2 posts were merged into an existing topic: Topic lưu trữ các post off-topic - version 3

Mình cũng đang rối chỗ này

Bạn phải insert lại dữ liệu thì nó mới hiện ra

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?