অস্থায়ী টেবিলটি উপস্থিত থাকলে এটি ফেলে দিন


96

আমার এসকিউএল-তে দুটি লাইনের কোড রয়েছে যা ফ্লাইতে দুটি টেবিল তৈরি করে, আমার মতো কিছু করা দরকার

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

আমার লাইনগুলি নিম্নলিখিতগুলি

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

আমি আমার পদ্ধতিতে এই দুটি টেবিলের জন্য কীভাবে সেই ধারণাটি প্রয়োগ করতে পারি?



উত্তর:


201

এসকিউএল সার্ভার 2016 থেকে আপনি কেবল ব্যবহার করতে পারেন

 DROP TABLE IF EXISTS ##CLIENTS_KEYWORD

পূর্ববর্তী সংস্করণগুলিতে আপনি ব্যবহার করতে পারেন

IF OBJECT_ID('tempdb..##CLIENTS_KEYWORD', 'U') IS NOT NULL
/*Then it exists*/
DROP TABLE ##CLIENTS_KEYWORD
CREATE TABLE ##CLIENTS_KEYWORD
(
   client_id INT
)

আপনি টেবিল কেটে ফেলার পরিবর্তে এবং পুনরায় পুনরুদ্ধার করার পরিবর্তে বিবেচনা করতে পারেন।

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

আপনি কি এই পদ্ধতির নীচে ছাঁটাই পোস্ট করতে পারেন, এটি আমাকে আরও উন্নত করতে সাহায্য করতে পারে :) আপনাকে ধন্যবাদ
ইউজার 710502

হুম কোনও কারণে যখন আমি এটি সম্পাদন করি তখন এটি বলে যে ## ক্লায়েন্টস_কাইওয়র্ড একটি অবৈধ অবজেক্টের নাম
user710502

@ ব্যবহারকারী - আপনি এসকিউএল সার্ভারের কোন সংস্করণে আছেন? আমি এসকিউএল সার্ভার ২০০৮ এ আছি এবং (আমি মনে করি) টেবিলটি করেছিল এবং যেটি বিদ্যমান ছিল না তার জন্য উভয়ই পরীক্ষা করে দেখেছি। এটির জন্য তৈরিটি মোড়ানো দরকার হতে পারে EXECযাতে পার্সার আগের সংস্করণগুলিতে অভিযোগ না করে। অর্থাত্ ব্যবহারEXEC('CREATE TABLE ##CLIENTS_KEYWORD(client_id INT)')
মার্টিন স্মিথ

Query প্রশ্নের OBJECT_ID IS NULLপরিবর্তে +1tempdb.sys.tables
ডাকব

4
@ টবিস্পাইট - প্রশ্নটি অস্থায়ী টেবিলগুলি সম্পর্কে। এই পয়েন্টগুলির বেশিরভাগই এর সাথে সীমিত প্রাসঙ্গিক।
মার্টিন স্মিথ

13

তার অবজেক্ট_আইডি পুনরুদ্ধার করে অস্তিত্বের জন্য পরীক্ষা করুন:

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

0

আপনি যা চেয়েছিলেন তা হ'ল:

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) 

যেহেতু আপনি সর্বদা টেবিলটি তৈরি করতে যাচ্ছেন, সারণীটি মুছে ফেলা হয়েছে কিনা তা নির্বিশেষে; একটি সামান্য অনুকূলিত সমাধান:

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) 
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.