728x90

테이블 또는 뷰에 종속된 뷰 및 프로시저, 뷰 또는 프로시저가 종속된 테이블 및 뷰 등

데이터베이스 개체 종속성에 대한 정보를 표시합니다.


sp_depends 테이블명


[테이블명]과 관계된 모든 프로시저를 알려준다



sp_depends 프로시저명


[프로시저명]과 관계된 모든 테이블을 알려준다.

728x90
MSSQL Server 2000 에서는 테이블변수에 insert ~ exec 가 지원되지 않았으나 MSSQL Server 2005에서는 지원합니
다. 참고하세요.

-- 2000 에서 실행시
declare @t table (i int)

insert @t
exec('select 1')

select * from @t

서버: 메시지 197, 수준 15, 상태 1, 줄 4
테이블 변수에 삽입할 때는 EXECUTE를 원본으로 사용할 수 없습니다.


-- 2005 에서 실행시
declare @t table (i int)

insert @t
exec('select 1')

select * from @t


(1개 행 적용됨)

i          
-----------
1

(1개 행 적용됨)
 
 
 
출처 : sqler.pe.kr

'데이터베이스 > SQL Server' 카테고리의 다른 글

사용된 명령어 정리  (0) 2008.04.29
sp_depends  (0) 2008.04.29
제약2 - FOREIGN KEY(참조키), CASECADE  (0) 2008.04.29
제약조건  (0) 2008.04.29
MSSQL2000 - sp_makewebtask - 쿼리의 결과를 HTML로  (0) 2008.04.29
728x90

FOREIGN KEY(참조키)


참조 되어지는 테이블에는 기본키혹은 유니크가 설정이 되어있어야하며
참조 하려는 테이블에는 참조키가 설정이 되어있어야 한다.

부모 테이블의 기본키 컬럼이 자식 테이블에 컬럼을 따로 만들지 않아도 자동으로 넘어감..


<테이블명 : 부서>                              <테이블명 : 입사지원>
------------------                        -------------------------
부서번호 |  부서명                             번호   |   이름     |  부서번호                           
------------------                        -------------------------
10              전산실                               1          이순신         10         
20              총무부                               2          홍길동         30
30              영업부                               3          김유신         30


CREATE TABLE 부서
(부서번호 INT CONSTRAINT PK_부서_부서번호 PRIMARY KEY,  //기본키
 
부서명 CHAR(20))


INSERT INTO 부서 VALUES(10,'전산실')
INSERT INTO 부서 VALUES(20,'총무부')
INSERT INTO 부서 VALUES(30,'영업부')


CREATE TABLE 입사지원
(번호 INT,
 이름 CHAR(10),
 부서번호 INT CONSTRAINT FK_입사지원_부서번호
              FOREIGN KEY REFERENCES 부서(부서번호)) //참조키


INSERT INTO 입사지원 VALUES(1,'이순신', 10)
INSERT INTO 입사지원 VALUES(2,'홍길동',30)
INSERT INTO 입사지원 VALUES(3,'김유신', 30)
INSERT INTO 입사지원 VALUES(4,'허준', 40)

//마지막 쿼리 에러.. 참조하는 부서번호에 40번이 없기때문에...



//참조하는 것이 있으면, 수정 및 삭제할수 없다.

UPDATE 부서
SET 부서번호=100
WHERE 부서번호=10

-->에러!!

 

//참조하는 것이 없기 때문에 수정및 삭제가 가능하다.

UPDATE 부서
SET 부서번호=200
WHERE 부서번호 =20


//참조하고 있는 것을 강제로 수정 및 삭제하려면 (CASECADE 사용)

① 입사지원의 참조키 제약을 지우고 수정 및 삭제를 한다.


ALTER TABLE 입사지원
DROP CONSTRAINT FK_입사지원_부서번호


② 처음에 FOREIGN 제약에 조건을 넣어서 테이블을 생성, 혹은 다음과 같이 수정해보자

ALTER TABLE 입사지원
ADD CONSTRAINT FK_입사지원_부서번호
            FOREIGN KEY(부서번호) REFERENCES 부서(부서번호)
             ON UPDATE CASCADE
             ON DELETE NO ACTION


※알아두기

    CASCADE : 연속동작, 참조하고 있다하더라도 참조당하는 것이 바뀌면 참조하는 것도 바뀜
    NO ACTION : 쓰지 않아도 디폴트값으로 가지고 있다. 동작하지 않는다는 것.

'데이터베이스 > SQL Server' 카테고리의 다른 글

sp_depends  (0) 2008.04.29
Table 변수 값넣기 - 2000, 2005 비교  (0) 2008.04.29
제약조건  (0) 2008.04.29
MSSQL2000 - sp_makewebtask - 쿼리의 결과를 HTML로  (0) 2008.04.29
View안에 StoredProcedure를 쓰는 방법  (0) 2008.04.29

+ Recent posts