[MS SQL] DB 테이블 존재여부 확인하기
MS SQL SERVER 에서 DB 테이블 존재여부 확인하기
++++++++++++++++++++++++++++++++++++++++++++++++++
+ 1
++++++++++++++++++++++++++++++++++++++++++++++++++
MS SQL 테이블 존재여부
sql = " IF object_id('테이블명') IS NOT NULL SELECT count(*) as count FROM 테이블명 where etc1='" & domain_addr & "' "
테이블이 있으명 실행
sql = sql & " IF object_id('테이블명')IS NULL SELECT count(*) as count FROM 다른테이블명 "
테이블이없으면 다른테이블 실행
++++++++++++++++++++++++++++++++++++++++++++++++++
+ 2
++++++++++++++++++++++++++++++++++++++++++++++++++
MS SQL 테이블 존재 여부 확인방법 #2
테이블 존재 여부를 확인하는 다양한 방법들을 볼까요.
여기서는 기본적인 몇 가지만 살펴보겠습니다.
쿼리 분석기를 이용해서 테스트 해 보세요.
-- northwind DB에 orders 테이블을 테스트합니다.
USE northwind
-- 아래 코드는 SQL Server 스크립팅 엔진이 생성하는 일반적인 코드입니다.
IF EXISTS(SELECT * FROM dbo.sysobjects WHERE id = object_id(N'dbo.orders')
AND objectproperty(id, N'IsUserTable') = 1)
SELECT '존재'
-- INFORMATION_SCHEMA owner의 TABLES 뷰를 이용해도 확인할 수 있죠.
IF EXISTS(SELECT * FROM information_schema.tables
WHERE table_name = 'orders' AND table_schema='dbo')
SELECT '존재'
-- 가장 단순한 방법은 obejct_id 함수를 이용하는 방법입니다.
-- N'' 은 문자열이 유니코드형임을 나타내는 지시어입니다.
IF object_id(N'dbo.orders') IS NOT NULL
SELECT '존재'
-- 이렇게도 가능하죠. 'U'는 sysobjects 테이블의 xtype 컬럼 값입니다.
IF object_id(N'dbo.orders', 'U') IS NOT NULL
SELECT '존재'
-- 임시 테이블의 경우는 TEMPDB에 작성되므로 다음과 같이 사용할 수 있죠.
IF object_id(N'tempdb.dbo.#temptable') IS NOT NULL
SELECT '존재'
/*
결론적으로 위의 모든 방법들은, sysobjects 시스템 테이블을 이용한다는
사실입니다.
sysobjects 시스템 테이블은 오브젝트의 가장 근본이 되는 중요한 테이블입니다.
이 시스템 테이블에 대해서 많은 공부 하시면 큰 도움이 되실겁니다.
*/
SELECT * FROM dbo.sysobjects
WHERE id = object_id('dbo.orders')
SELECT COUNT(NAME) CNT FROM SYSOBJECTS WHERE TYPE = 'U' AND NAME='테이블이름'
count(name) > 0 이면 존재
출처 : 데브피아
++++++++++++++++++++++++++++++++++++++++++++++++++
+ 3
++++++++++++++++++++++++++++++++++++++++++++++++++
MS SQL 2000 테이블 존재여부
테이블 존재여부 확인을 위한 최적의방안]
시스템 테이블을 이용하시는 방안이 있습니다.
MSSQL2000의 각 DB마다 시스템관련 저장 프로시져를 가지고 있으며, 전체 DB 즉 master DB에서 전체 DB 및 전체 Column등 대부분을 관리를 하고있습니다.
use master
go
Select * From sysobjects where xtype = 'U' 를 하시면 사용자가 직접만든 테이블 목록이 촤르르 펼쳐집니다. 여기서 응용력을 발휘하셔서
SELECT *
FROM sysobjects
WHERE xtype = 'U' AND
name = '{알고자하는테이블명}'
또는
SELECT Count(*)
FROM sysobjects
WHERE xtype = 'U' AND
name = '{알고자하는테이블명}'
을 지정하셔서 건수가 0건이면 없는것이며, 1건이면 존재하는 방식으로 체크하는 방안이 있습니다.
위 의 시스템DB를 뒤져서 체크하는 방안이 제일 안전한 방안이며, 통상 MSSQL을 사용하고 있는 기업중 대부분의 프로젝트상에서 위방식이 가장 안전한 방식이며, 단점은 DB Query를 해야하기때문에 네트워크 트래픽부분상 시간소모가 된다는 점입니다.( 약 0.001초 이내 )
'IT-개발,DB' 카테고리의 다른 글
[windows XP] 지운 파일 되살리기 (0) | 2016.09.17 |
---|---|
[Mysql] 테이블 존재여부 확인하기 (0) | 2016.09.06 |
[php] 파일 관련 함수 (0) | 2016.09.04 |
[php] md5 - md5알고리즘의 암호화 함수 (0) | 2016.09.04 |
[php] 문자열 <---> 배열 문자열 (0) | 2016.09.04 |
댓글