프로그램 처럼...특정 DB에서 특정 이름의 테이블이 있는 확인하고, 있으면 1,... 없으면 0을 반환하는 쿼리 혹은 SP를 짜고 싶습니다. 그 결과에 따라, 그 값에 따라 테이블이 없으면 Create table하고, 있으면 insert into해서 데이터를 넣으려고 하는데,... 어찌 반환받아야 할지가 오리무중입니다. 좀 도와주셔요!
Comment 5
-
디비디비
2014.04.29 08:59
넘 감사합니다... 이틀동안 삽질했었는데... 바로 해결했습니다. 감사합니다... 역시, SQL는 오묘합니다....
-
디비디비
2014.04.29 12:36
그런데, MS SQL에 Linked Server로 붙인 MySQL의 특정 DB, 특정 table의 유무를 알려고 하는데... 이때는 위와 같이 하니까 무슨 버얼건 에러가 많이 나옵니다...
IF OBJECT_ID('Linked서버명...tbl명', 'U') IS NULL BEGINSELECT 결과 = 0
END ELSE BEGIN
SELECT 결과 = 1
END
-
OBJECT_ID는 SQL SERVER의 고유 함수입니다.
만약 테이블이 있다면 그 테이블의 objectid를 반환합니다.
그렇게 유무를 확인하죠.
아니면 sys.objects 에 name으로 조회할 수도 있구요.
하지만 이것은 SQL SERVER일때 얘기구요.
MySQL은 제가 사용을 잘 안해봐서 모르겠는데
SELECT COUNT(*) FROM information_schema.tables WHERE table_schema = ‘[DB명]‘ AND table_name = ‘[TABLE명]‘;
이런식의 쿼리로 테이블 유무를 알 수 있다네요.
이 방법이 안되면 "mysql 테이블 유무" 이렇게 구글링 해보세요.
구글링 해보니 MySQL에는 훌륭한 기능이 있군요.
CREATE TABLE IF NOT EXISTS members ( id int , email varchar(45) )
-
디비디비
2014.05.07 14:54
캄사합니다... 구글링을 하는 것도 앎의 깊이에 따라 다른 것 같습니다. 엉뚱한 걸 찾고 있었군요! 결코 초짜가 아니신듯 합니다...ㅠ.ㅠ
IF OBJECT_ID('테이블이름', 'U') IS NULL BEGIN
SELECT 결과 = 0
END ELSE BEGIN
SELECT 결과 = 1
END
또는...
IF OBJECT_ID('테이블이름', 'U') IS NULL BEGIN
CREATE TABLE...
END
INSERT INTO...