/**********************************************************************************************
-- Title : [2k5] 트리거 생성, 변경, 활성화 및 비활성화
-- Reference : hanbitbook.co.kr
-- Key word : create trigger alter trigger enable trigger disable trigger
**********************************************************************************************/
/*
-- 트리거 기본
*/
use tempdb;
go
drop table testtbl;
go
create table testtbl (id int, txt nvarchar(5));
go
insert into testtbl values(1, '우재남');
insert into testtbl values(2, '지운이');
insert into testtbl values(3, '한주연');
go
create trigger testtrg -- 트리거 이름
on testtbl -- 트리거를 부착할 테이블
after delete, update -- 삭제,수정후에 작동하도록 지정
as
print('트리거가 작동했습니다') ; -- 트리거 실행시 작동되는 코드들
go
insert into testtbl values(4, '당탕이');
go
update testtbl set txt = '우지운' where id = 2;
go
delete testtbl where id = 4;
go
select * from testtbl;
go
/*
-- 서버단 트리거
*/
--서버단 ddl 트리거 생성
create trigger ddltrg_server
on all server
after create_database, alter_database, drop_database
as
print ' 경고: 데이터베이스 관련된 작업은 관리자에게 문의하세요.'
rollback transaction;
go
--트리거 테스트
create database testdb;
go
--트리거 삭제
drop trigger ddltrg_server on all server;
/*
-- db단 트리거
*/
use sqldb;
go
create trigger ddltrg_sqldb
on database
after drop_table, alter_table
as
print ' 경고: 테이블을 삭제하거나 변경하는 것은 금지되어 있습니다.'
rollback transaction;
go
--테스트
drop table buytbl;
drop table usertbl;
--트리거 변경
alter trigger ddltrg_sqldb
on database
after ddl_table_view_events
as
print ' 경고: 모든 테이블/뷰/인덱스에 대한 생성,변경,삭제는 금지되었습니다.'
rollback transaction;
go
--테스트
create table prodtbl (prodid int, prodname nvarchar(20));
--트리거 비활성화
disable trigger ddltrg_sqldb on database;
--테스트(됨)
create table prodtbl (prodid int, prodname nvarchar(20));
--트리거 활성화
enable trigger ddltrg_sqldb on database;
--테스트(안됨)
create table prodtbl (prodid int, prodname nvarchar(20));
/*
--db단 트리거 삭제
drop trigger ddltrg_sqldb on database;
*/
[2k5] 트리거 생성, 변경, 활성화 및 비활성화
2008. 9. 6. 22:36
반응형
반응형