학습

msslq ALTER 형식

반생자 2010. 3. 4. 15:39

 

 

A. 새 열을 추가하도록 테이블 변경

다음 예제는 null 값을 허용하고 DEFAULT 정의를 통해 제공된 값이 없는 열을 추가합니다. 각 행은 새 열에 NULL을 가집니다.

CREATE TABLE doc_exa ( column_a INT) GO ALTER TABLE doc_exa ADD column_b VARCHAR(20) NULL GO EXEC sp_help doc_exa GO DROP TABLE doc_exa GO

B. 열을 삭제하도록 테이블 변경

다음 예제는 열을 삭제하도록 테이블을 수정합니다.

CREATE TABLE doc_exb ( column_a INT, column_b VARCHAR(20) NULL) GO ALTER TABLE doc_exb DROP COLUMN column_b GO EXEC sp_help doc_exb GO DROP TABLE doc_exb GO

C. 제약 조건이 있는 열을 추가하도록 테이블 변경

다음 예제는 UNIQUE 제약 조건이 있는 새 열을 추가합니다.

CREATE TABLE doc_exc ( column_a INT) GO ALTER TABLE doc_exc ADD column_b VARCHAR(20) NULL CONSTRAINT exb_unique UNIQUE GO EXEC sp_help doc_exc GO DROP TABLE doc_exc GO

D. 검사되지 않은 제약 조건을 추가하도록 테이블 변경

다음 예제는 테이블의 기존 열에 제약 조건을 추가합니다. 이 열에는 제약 조건을 위반하는 값이 있으므로 기존 행에 대해 유효성 검사를 하지 않고 제약 조건을 추가하도록 WITH NOCHECK을 사용해야 합니다.

CREATE TABLE doc_exd ( column_a INT) GO INSERT INTO doc_exd VALUES (-1) GO ALTER TABLE doc_exd WITH NOCHECK ADD CONSTRAINT exd_check CHECK (column_a > 1) GO EXEC sp_help doc_exd GO DROP TABLE doc_exd GO

E. 제약 조건이 있는 여러 열을 추가하도록 테이블 변경

다음 예제는 제약 조건이 정의된 여러 열을 새로 추가합니다. 첫 번째 새 열은 IDENTITY 속성이 있으므로 테이블의 각 행은 ID 열에 새로운 증가 값을 가집니다.

CREATE TABLE doc_exe ( column_a INT CONSTRAINT column_a_un UNIQUE) GO ALTER TABLE doc_exe ADD /* Add a PRIMARY KEY identity column. */ column_b INT IDENTITY CONSTRAINT column_b_pk PRIMARY KEY, /* Add a column referencing another column in the same table. */ column_c INT NULL CONSTRAINT column_c_fk REFERENCES doc_exe(column_a), /* Add a column with a constraint to enforce that */ /* nonnull data is in a valid phone number format. */ column_d VARCHAR(16) NULL CONSTRAINT column_d_chk CHECK (column_d IS NULL OR column_d LIKE "[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]" OR column_d LIKE "([0-9][0-9][0-9]) [0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]"), /* Add a nonnull column with a default. */ column_e DECIMAL(3,3) CONSTRAINT column_e_default DEFAULT .081 GO EXEC sp_help doc_exe GO DROP TABLE doc_exe GO

F. 기본값이 있는 Null 허용 열 추가

다음 예제는 DEFAULT 정의가 있는 null 허용 열을 추가하고 WITH VALUES를 사용하여 테이블의 각 기존 행에 대한 값을 제공합니다. WITH VALUES를 사용하지 않으면 각 행이 새 열에 NULL 값을 가집니다.

ALTER TABLE MyTable ADD AddDate smalldatetime NULL CONSTRAINT AddDateDflt DEFAULT getdate() WITH VALUES

G. 제약 조건 해제 및 재설정

다음 예제는 데이터에 허용되는 급여를 제한하는 제약 조건을 해제합니다. ALTER TABLE에 WITH NOCHECK CONSTRAINT를 사용하면 제약 조건이 해제되어 해당 제약 조건을 위반하는 데이터를 삽입할 수 있습니다. WITH CHECK CONSTRAINT는 제약 조건을 다시 설정합니다.

CREATE TABLE cnst_example (id INT NOT NULL, name VARCHAR(10) NOT NULL, salary MONEY NOT NULL CONSTRAINT salary_cap CHECK (salary < 100000) ) -- Valid inserts INSERT INTO cnst_example VALUES (1,"Joe Brown",65000) INSERT INTO cnst_example VALUES (2,"Mary Smith",75000) -- This insert violates the constraint. INSERT INTO cnst_example VALUES (3,"Pat Jones",105000) -- Disable the constraint and try again. ALTER TABLE cnst_example NOCHECK CONSTRAINT salary_cap INSERT INTO cnst_example VALUES (3,"Pat Jones",105000) -- Reenable the constraint and try another insert, will fail. ALTER TABLE cnst_example CHECK CONSTRAINT salary_cap INSERT INTO cnst_example VALUES (4,"Eric James",110000)

H. 트리거 해제 및 재설정

다음 예제는 ALTER TABLE의 DISABLE TRIGGER 옵션을 사용하여 트리거를 해제하고 트리거를 위반하는 데이터를 삽입할 수 있도록 합니다. ENABLE TRIGGER를 사용하여 트리거를 다시 설정할 수 있습니다.

CREATE TABLE trig_example (id INT, name VARCHAR(10), salary MONEY) go -- Create the trigger. CREATE TRIGGER trig1 on trig_example FOR INSERT as IF (SELECT COUNT(*) FROM INSERTED WHERE salary > 100000) > 0 BEGIN print "TRIG1 Error: you attempted to insert a salary > $100,000" ROLLBACK TRANSACTION END GO -- Attempt an insert that violates the trigger. INSERT INTO trig_example VALUES (1,"Pat Smith",100001) GO -- Disable the trigger. ALTER TABLE trig_example DISABLE TRIGGER trig1 GO -- Attempt an insert that would normally violate the trigger INSERT INTO trig_example VALUES (2,"Chuck Jones",100001) GO -- Re-enable the trigger. ALTER TABLE trig_example ENABLE TRIGGER trig1 GO -- Attempt an insert that violates the trigger. INSERT INTO trig_example VALUES (3,"Mary Booth",100001) GO

관련 항목

[출처] [MSSQL] Alter table|작성자 조이

'학습' 카테고리의 다른 글

h/w 자원산정 정보  (0) 2010.10.06
oracle의 로우넘을 mssql에서 사용  (0) 2010.04.15
퓨전차트 주소 -김성현 20091221-  (0) 2009.12.21
SQL SELECT INTO AND INSERT SELECT 햐햐  (0) 2009.08.18
[기준] 품목채번 음  (0) 2009.03.31