2013-11-14 2 views
-2

을 만들 화재가 정상이면 항상 SQL 서버에 대한 CE 및 C#으로무슨 더 나은는 : 테이블이 존재하거나 항상 문

SELECT * FROM INFORMATION_SCHEMA.TABLES 
WHERE TABLE_NAME = 'my_table_name' 

처럼 확인보다는 생성 문을 화재에 확인합니다. 접근 방식에 관계없이 항상 해고 될 단일 쿼리가 있습니다. 그것 Isnt ???

모든 테이블을 만들 때 trasaction을 사용하고 있습니다. 그래서 하나의 테이블이 있다면 분명히 모든 것이 생성됩니다.

그래서 동일한 트랜잭션을 사용하면 트랜잭션이 처음 테이블 작성 명령문에서 올바르게 실패합니다. 그러나이 좋은 성능은 현명한 것입니까 ???

+3

왜 C#으로 테이블을 만들겠습니까? – Liam

+0

작성 중에 이름이 같은 테이블이 이미 있으면 테이블/스키마 건너 뛰기를 삭제해야합니다. 그래, 괜찮지 않아. – Miller

답변

2

확인 테이블은 항상 존재하거나하는 경우는 예외를 얻을 것이다, 테이블이 이미 데이터베이스에 존재하는 경우 문을

을 만들 화재.

당신은 삭제, 테이블 존재를 확인하고, 뭔가를 만들 수 있습니다 : 당신은 더 후, 테이블을 생성하고 예외를 찾기 위해을 시도 의미하는 경우

if OBJECT_ID('dbo.my_table_name', 'U') IS NOT NULL 
    DROP TABLE dbo.my_table_name; 
--and then 
CREATE TABLE .... 
+0

예, 항상 예외를 잡을 수 있습니다. 그리고 네, 'if'는 SQL Server CE에서 지원되지 않습니다. –

1

합니다. 예외는 비싸고 제대로 처리되지 않으면 예기치 않게 프로그램이 종료 될 수 있습니다.

테이블의 존재 여부를 확인하는 것이 가장 좋습니다.

+0

아니 내가 exeptions를 올바르게 잡으면 어떻게됩니까? –

+1

먼저 확인하는 것이 더 나은 방법입니다. –