CREATE TRIGGER aupdateb
BEFORE UPDATE on test_aaa
EXECUTE
if obj.idx = 1
update test_bbb set aa= obj.aa where idx = obj.idx
이와같은 트리거를 작성하려하는데
test_aaa 이란 테이블에서 업데이트가 이루어질떄 idx가 1인 테이블만 업데이트를 하려고하는데..
이에대한 쿼리문작성법이 어떻게 되는지 궁금합니다..
CREATE TRIGGER aupdateb
BEFORE UPDATE on test_aaa
EXECUTE
if obj.idx = 1
update test_bbb set aa= obj.aa where idx = obj.idx
이와같은 트리거를 작성하려하는데
test_aaa 이란 테이블에서 업데이트가 이루어질떄 idx가 1인 테이블만 업데이트를 하려고하는데..
이에대한 쿼리문작성법이 어떻게 되는지 궁금합니다..
답변 언제주시나요... 빨리주셨으면 좋겠는데...ㅠㅠ
안녕하세요. 답변이 늦어 죄송합니다.
요청하신 트리거는 execute와 if 문의 순서를 바꾸어야 정상적으로 수행이 되실 것 입니다. 즉, 아래와 같이 변경해주셔야 합니다.
create trigger aupdateb
before update on test_aaa
if obj.idx=1
execute
update test_bbb set aa=obj.aa where idx=obj.idx
위의 트리거를 적용해 보시고, 원하시는 결과가 나오지 않을 경우, 댓글 부탁드립니다.
감사합니다.
idx가 1인 데이터만 변경되고 나머지는 허용하지 않고자 하는걸로 보입니다.
이 경우에는
create trigger aupdateb
before update on test_aaa
if obj.idx <> 1
execute reject;
와 같은 형태가 되는게 맞을듯 하네요.
트리거를 사용하는 경우에는 성능이 떨어질 수 있는데, 특히 여러개 데이터를 한꺼번에 변경해야 하는 경우에는 더 영향을 받습니다.
성능관점에서는 응용에서 해당 데이터만 변경될 수 있도록 처리해주는게 나을것 같습니다.
만약, idx=1 인 데이터만 특정사용자에게 노출하고 변경하고자 하는 용도라면
뷰를 만드는것이 좋을것입니다.
create view t_v as select * from test where idx=1
과 같은 형태로 만든후 뷰에 질의를 하면 됩니다.
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
Sketchbook5, 스케치북5
안녕하세요.
큐브리드에 관심을 가져 주셔서 감사합니다. 문의하신 내용에 대하여 조속하게 답변을 드리도록 하겠습니다.