CREATE TRIGGER [dbo].[TRG_AAA] on [dbo].[AAA]
AFTER INSERT
AS
BEGIN
SET NOCOUNT ON
DECLARE @V_A VARCHAR(10)
SELECT @V_A = A FROM inserted
IF (@V_A = 'A')
BEGIN
INSERT INTO BBB
SELECT A, B FROM inserted
END
--IF @@RowCount > 0
--BEGIN
-- INSERT INTO BBB
-- SELECT A, B FROM inserted
--END
END
---------------------------------------------
INSERT INTO AAA (A, B) VALUES ('A', 0)
SELECT * FROM AAA
SELECT * FROM BBB
MSSQL 트리거도 오라클과 똑같을 줄 알았고 별 생각없이 인터넷상에 도는 트리거 예제를 긁어다가 적용했는데
왠걸 오늘 큰건 하나 저질렀다.
내용인 즉슨 바로 'AFTER INSERT' 이 옵션이었는데 오라클에서는 주로 내가 쓰던건 INSERTED(?) 였다. INSERT가 되고난 이후 처리되는 뭐 이 정도로 이해를 했다.
오늘 저지른 실수의 옵션은 바로 'INSTEAD OF INSERT' 이미 늦었지만 눈에 들어오기 시작한것은 INSTEAD OF... INSTEAD OF... INSTEAD OF...
대신에... 대신에... 대신에... INSERT 대신에... OTL
INSERT되지 않고 설정한 내용으로 처리가 되다보니 정작 본래 테이블에는 데이터를 하나도 안들어가는 불상사가 발생... 그것도 운영 DB로...
뭐 좋은 경험으로 삼고 다음에 조심해 나가면 되겠지...
'030. Database > 02. MS_SQL' 카테고리의 다른 글
[MSSQL] 날짜(From ~ To) 가져오기 (0) | 2023.08.18 |
---|---|
[MSSQL] 컬럼 암호화 (PWDENCRYPT, PWDCOMPARE) (0) | 2016.10.13 |
[MSSQL[ 테이블 이름 변경 및 컬럼명 변경 (0) | 2014.05.28 |
[MSSQL] 관리TOOL에서 테이블 컬럼등을 수정하고자 할때 (0) | 2014.05.09 |
[MSSQL] 저장프로시저 FETCH 처리 (0) | 2014.02.07 |
WRITTEN BY
- 테네시왈츠
항상 겸손하게 항상 새롭게 항상 진실하게