30/09/2018, 20:47

FOR INSERT & INSTEAD trong trigger, sql server?

mình có 1 câu hỏi
viết trigger
<img src="//daynhauhoc.s3-ap-southeast-1.amazonaws.com/original/2X/f/f3ee7a41f191e6518293912153e20fdbd6a0381a.JPG" width=“636” height=“33”

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

abcxyz viết 22:58 ngày 30/09/2018

help me ,help me

abcxyz viết 22:54 ngày 30/09/2018

help me ,help me help me

Bài liên quan
0