SQL Server 의 기본 값 을 가 진 모든 필드 의 문 구 를 보 여 줍 니 다.

전문가 의 해답 은 모든 데이터베이스 에 있 는 세 개의 시스템 표를 조회 함으로써 각 표 의 모든 필드 의 기본 값 을 얻 을 수 있다.다음은 이 핵심 조회 입 니 다.현재 데이터베이스 에 분 배 된 모든 사용자 테이블 의 기본 값 을 되 돌려 줍 니 다.이 조 회 는 SQL 2000 과 SQL 2005 에서 모두 호 환 된다.   Quote: 

SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id
  LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id
  WHERE SO.xtype = 'U'
  ORDER BY SO.[name], SC.colid
sysobjects 는 우리 에 게 표 메타 데 이 터 를 제공 했다.이 예 에서 우 리 는 표 이름 에 만 관심 이 있다.syscolumns 표 는 표 의 각 필드 와 연 결 된 메타 데 이 터 를 저장 합 니 다.이 예 에서 우 리 는 필드 이름 만 필요 합 니 다.마지막 으로 기본 값 메타 데 이 터 는 syscoments 표 에서 제공 합 니 다.Northwind 데이터베이스 에서 이 조 회 를 실행 하면 다음 결 과 를 생 성 합 니 다.왼쪽 조인 이 syscoments 표 에 있 기 때문에 NULL 기본 값 을 되 돌려 줍 니 다.按此在新窗口打开图片지금 나 는 이 좋 은 기본 조회 버 전에 어떤 선택 이 있 는 지 생각 하고 있다.선택 1:특별한 기본 값 을 검색 합 니 다.WHERE 조건 문 구 를 편집 하면 모든 표 에서 특별한 기본 값 을 볼 수 있 습 니 다.   Quote: SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"   FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id   LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id   WHERE SO.xtype = 'U' AND SM.TEXT = '(0)'   ORDER BY SO.[name],SC.colid 선택 2:기본 값 필드 가 있 는 정보 수정 핵심 검색 어 를 가 진 WHERE 조건문 만 되 돌려 줍 니 다.syscoments.text 표 의 NULL 값 을 무시 합 니 다.이 기 교 는 다음 과 같 습 니 다.Quote:

SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id
  LEFT JOIN dbo.syscomments SM ON SC.cdefault = SM.id
  WHERE SO.xtype = 'U' AND SM.TEXT IS NOT NULL
  ORDER BY SO.[name], SC.colid
단,FROM 조건 을 문장의 JOIN 에서 하나의 LEFT JOIN 에서 하나의 INNER JOIN 으로 바 꾸 면 최적화 가 제 공 됩 니 다.Quote:

SELECT SO.NAME AS "Table Name", SC.NAME AS "Column Name", SM.TEXT AS "Default Value"
  FROM dbo.sysobjects SO INNER JOIN dbo.syscolumns SC ON SO.id = SC.id
  INNER JOIN dbo.syscomments SM ON SC.cdefault = SM.id
  WHERE SO.xtype = 'U'
  ORDER BY SO.[name], SC.colid
按此在新窗口打开图片사실은 또 다른 선택 이 있 습 니 다.SQL 2005 의 시스템 디 렉 터 리 보 기 를 이용 합 니 다.앞의 조 회 는 저 에 게 이때 필요 한 정 보 를 제공 해 주 었 고 SQL 2000 과 SQL 2005 에서 모두 사용 할 수 있 습 니 다.SQL 2000 인 스 턴 스 에서 이 기본 값(실제 기본 제약)과 관련 된 추가 메타 데 이 터 를 발굴 할 수 있 습 니 다.이 조 회 를 시스템 디 렉 터 리 보기에 지정 하면 이전 조회 에서 표시 되 지 않 은 추가 정 보 를 얻 을 수 있 습 니 다.Quote:

SELECT ST.[name] AS "Table Name", SC.[name] AS "Column Name", SD.definition AS "Default Value", SD.[name] AS "Constraint Name"
  FROM sys.tables ST INNER JOIN sys.syscolumns SC ON ST.[object_id] = SC.[id]
  INNER JOIN sys.default_constraints SD ON ST.[object_id] = SD.[parent_object_id] AND SC.colid = SD.parent_column_id
  ORDER BY ST.[name], SC.colid
按此在新窗口打开图片그래서 기억 하 세 요.더 좋 은 방법 이 없다 는 것 을 알 게 되 었 기 때문에 데이터 베이스 관리자 로 서 의 본능 에 의 해 연구 합 니 다.너 는 네가 무엇 을 얻 을 수 있 는 지 영원히 알 지 못 할 것 이다.

좋은 웹페이지 즐겨찾기