Alarm Table의 형식은 다음과 같습니다.
CREATE TABLE [dbo].[TB_ALARM_EVENT](
[START_TIME] [varchar](50) NOT NULL,
[END_TIME] [varchar](50) NULL,
[TAG_NAME] [varchar](50) NOT NULL,
CONSTRAINT [PK_TB_ALARM_EVENT_1] PRIMARY KEY CLUSTERED
(
[START_TIME] ASC,
[TAG_NAME] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
Table의 Data는 Insert Query와 Update Query로 table에 들어옵니다.
Insert Query는 End_time을 제외한 나머지 정보가 들어오며,
Update Query는 End_time을 Update합니다.
insert into TB_ALARM_EVENT (start_time, tag_name) values ('20180225235000','AAAA')
Update TB_ALARM_EVENT set End_time = '20180226000001' where tag_name = 'AAAA' and start_time = '20180225235000'
그런데, 종종 프로그램 오류로 Update Query의 where절에 있는 start_time이 잘못들어와서,
Update가 안되는 경우가 있습니다.
Update Query의 Where절이 잘못되었을경우, 0 row(s) affected 라고 결과 메세지가 나오는데,
이런경우 해당 table에 Trigger를 이용하여, 그 Query문을 저장하려고 했습니다.
그런데, Update Trigger의 경우, 해당 Update Query가 Table내의 Data를 Update하였을 경우에만
그 Query를 저장 할 수 있는것으로 알고 있습니다.
Update Query가 Table내의 Data를 변경 하지 못하였을 경우,
그 Query를 다른 Table로 저장하는 방법이 있는지 질문 드립니다.
Comment 1
-
안돼요
2018.02.27 09:44
Update 쿼리 하고 나서
조건에 맞는 데이터가 없으면 다른테이블에 insert 합니다.
if not extsis (select 0
from TB_ALARM_EVENT
where tag_name = 'AAAA'
and start_time = '20180225235000'
and End_time = '20180226000001')
begin
insert into TB_TEMP (tag_name, start_time, End_time)
values ('AAAA', '20180225235000' , '20180226000001'')
end