반응형
USE master
CREATE DATABASE sqlDB
GO
USE sqlDB
CREATE TABLE userTbl -- 사용자테이블
( userID nchar(8) NOT NULL PRIMARY KEY, -- 사용자아이디
name nvarchar(10) NOT NULL, -- 이름
birthYear int NOT NULL, -- 출생년도
addr nchar(4) NOT NULL, -- 지역(경기,서울,경남,전북식으로2글자만입력)
mobile1 nchar(3), -- 휴대폰의국번(011, 016, 017, 018, 019, 010 등)
mobile2 nchar(8), -- 휴대폰의나머지전화번호(하이픈제외)
height smallint -- 신장
)
GO
CREATE TABLE buyTbl -- 사용자구매테이블
( num int IDENTITY NOT NULL PRIMARY KEY, -- 순번(PK)
userid nchar(8) NOT NULL --아이디(FK)
FOREIGN KEY REFERENCES userTbl(userid),
prodName nchar(6) NOT NULL, -- 물품명
groupName nchar(4) , -- 분류
price int NOT NULL, -- 단가
amount smallint NOT NULL -- 수량
)
GO
USE master ;
RESTORE DATABASE sqlDB FROM DISK ='c:\sqldb.bak' WITH REPLACE ;
USE sqlDB;
GO
CREATE TRIGGER ddlTrg_sqlDB
ON DATABASE
AFTER DROP_TABLE, ALTER_TABLE
AS
PRINT ' 경고: 테이블을 삭제하거나 변경하는 것은 금지되어 있습니다.'
ROLLBACK TRANSACTION;
DROP TABLE buyTbl;
DROP TABLE userTbl;
ALTER TRIGGER ddlTrg_sqlDB
ON DATABASE
AFTER DDL_TABLE_VIEW_EVENTS
AS
PRINT ' 경고: 모든 테이블/뷰/인덱스에 대한 생성,변경,삭제는 금지되었습니다.'
ROLLBACK TRANSACTION;
CREATE TABLE prodTbl (prodID INT, prodName NVARCHAR(20));
DISABLE TRIGGER ddlTrg_sqlDB ON DATABASE;
ENABLE TRIGGER ddlTrg_sqlDB ON DATABASE;
CREATE TRIGGER ddlTrg_server
ON ALL SERVER
AFTER CREATE_DATABASE, ALTER_DATABASE, DROP_DATABASE
AS
PRINT ' 경고: 데이터베이스 관련된 작업은 관리자에게 문의하세요.'
ROLLBACK TRANSACTION;
CREATE DATABASE testDB;
DROP TRIGGER ddlTrg_server ON ALL SERVER;
USE sqlDB;
DROP TRIGGER ddlTrg_sqlDB ON DATABASE;
-- 여기서 잠깐 (P645)
EXEC sp_configure 'nested triggers', 0
RECONFIGURE;
일반적인 트리거는 테이블밑에 열에 있으니
DDL 트리거는 아래 그림처럼 들어간다
'Database > MS-SQL' 카테고리의 다른 글
DB 전문검색(Full Text Search) 관련 링크 http://sqler.pe.kr/sql2k/151.asp (MSSQL 2000) (0) | 2008.10.21 |
---|---|
DB 전체 텍스트 검색 서비스 (1) | 2008.10.21 |
쿼리 관련 소스 모음 (0) | 2008.10.20 |
DB XML 데이터 형식 (0) | 2008.10.20 |
DB 트리거 문장 삽입하고 롤백 하기(저장안되게) (0) | 2008.10.20 |
DB 트리거 백업트리고 사용법 INSERT INTO SELECT 설명 (0) | 2008.10.20 |
DB 트리거 (TRIGGER ) DML트리거와 DDL트리거 DCL트리거 (0) | 2008.10.20 |
DB CASE 문을 2개 안쓰고 한개로쓰기 (0) | 2008.10.20 |