2011-08-31 38 views
73

Tôi có hai dòng mã trong SQL tạo ra hai bảng một cách nhanh chóng, tôi cần phải làm điều gì đó nhưThả một bảng tạm thời nếu nó tồn tại

IF TABLE EXISTS 
    DROP IT AND CREATE IT AGAIN 
ELSE 
    CREATE IT 

dòng của tôi là những người sau

CREATE TABLE ##CLIENTS_KEYWORD(client_id int)  
CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 

làm cách nào để áp dụng khái niệm đó cho hai bảng này trong quy trình của tôi?

+1

có thể trùng lặp của [Cách tốt nhất để xác định xem bảng tạm thời tồn tại trong SQL Server là gì?] (http://stackoverflow.com/questions/2649/whats-the-best -xác định-nếu-một-tạm-bảng-tồn tại-trong-sql-server) –

+0

có thể trùng lặp của [kiểm tra nếu temp bảng tồn tại và xóa nếu nó tồn tại trước khi tạo ra một bảng tạm thời] (http: // stackoverflow .com/question/659051/check-if-temp-table-tồn tại-và-xóa-nếu-nó-tồn tại-trước-tạo-một-temp-bảng) – bobs

Trả lời

143

Từ SQL Server 2016 bạn chỉ có thể sử dụng

DROP TABLE IF EXISTS ##CLIENTS_KEYWORD 

Trong các phiên bản trước, bạn có thể sử dụng

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    /*Then it exists*/ 
    DROP TABLE ##CLIENTS_KEYWORD 

CREATE TABLE ##CLIENTS_KEYWORD 
    (
    client_id INT 
) 

Bạn cũng có thể xem xét cắt bỏ bảng thay vì hơn là thả và tái tạo.

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    TRUNCATE TABLE ##CLIENTS_KEYWORD 
ELSE 
    CREATE TABLE ##CLIENTS_KEYWORD 
    (
     client_id INT 
    ) 
+0

bạn cũng có thể đăng các cắt ngắn dưới đây phương pháp này, nó có thể giúp tôi tốt hơn :) cảm ơn bạn – user710502

+1

@user. Xem Chỉnh sửa –

+0

hmm vì một số lý do khi tôi thực thi nó, nó nói rằng ## CLIENTS_KEYWORD là tên đối tượng không hợp lệ – user710502

9

Kiểm tra sự tồn tại bằng cách lấy nó object_id:

if object_id('tempdb..##clients_keyword') is not null 
    drop table ##clients_keyword 
0

gì bạn yêu cầu là:

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    BEGIN 
     DROP TABLE ##CLIENTS_KEYWORD 

     CREATE TABLE ##CLIENTS_KEYWORD(client_id int) 

    END 
ELSE 
    CREATE TABLE ##CLIENTS_KEYWORD(client_id int) 

IF OBJECT_ID('tempdb..##TEMP_CLIENTS_KEYWORD') IS NOT NULL 
    BEGIN 
     DROP TABLE ##TEMP_CLIENTS_KEYWORD 

     CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 

    END 
ELSE 
    CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 

Vì bạn đang luôn luôn tạo bảng, bất kể bảng bị xóa hay không; một giải pháp tối ưu hóa hơi là:

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD') IS NOT NULL 
    DROP TABLE ##CLIENTS_KEYWORD 

CREATE TABLE ##CLIENTS_KEYWORD(client_id int) 

IF OBJECT_ID('tempdb..##TEMP_CLIENTS_KEYWORD') IS NOT NULL 
    DROP TABLE ##TEMP_CLIENTS_KEYWORD 

CREATE TABLE ##TEMP_CLIENTS_KEYWORD(client_id int) 
Các vấn đề liên quan