sql >> データベース >  >> RDS >> Sqlserver

SQL Server(T-SQL)にテーブルをドロップする前にテーブルが存在するかどうかを確認する4つの方法

    SQLでテーブルを簡単に削除できます。 DROP TABLE myTableを使用するだけです ここで、myTable ドロップするテーブルの名前です。このメソッドを使用して、T-SQLスクリプトを介してSQLServerにテーブルをドロップできます。

    ただし、テーブルが実際に存在しない場合はエラーが発生します。つまり、最初にテーブルの存在を確認しない限り。

    以下は、T-SQLを使用して、テーブルを削除する前にテーブルが存在するかどうかを確認する4つの方法です。

    オプション1:IF EXISTS 条項

    SQL Server 2016以降を使用する場合は、IF EXISTSを使用できます。 DROP TABLEの句 テーブルを削除する前に、テーブルの存在を確認するステートメント:

    DROP TABLE IF EXISTS t1;

    これにより、t1というテーブルが削除されます 存在する場合。

    テーブルが存在する(したがって削除される)ときに上記のステートメントを実行した結果は次のとおりです。

    Commands completed successfully.

    そして、すぐにステートメントを再度実行すると(つまり、テーブルが存在しない場合)、次のようになります。

    Commands completed successfully.

    同じ出力。したがって、テーブルが存在するかどうかに関係なく、ステートメントは正常に実行されます。

    IF EXISTSを使用せずにテーブルを削除しようとするとどうなりますか。 条項:

    DROP TABLE t1;

    結果:

    Msg 3701, Level 11, State 5, Line 1
    Cannot drop the table 't1', because it does not exist or you do not have permission.

    オプション2:オブジェクトIDを確認する

    または、OBJECT_ID()を使用することもできます テーブルを削除する前に、テーブルの存在を確認する関数:

    IF OBJECT_ID(N'dbo.t1', N'U') IS NOT NULL
    DROP TABLE dbo.t1;
    GO

    上記の例では、オブジェクトIDでdbo.t1を確認しています。 テーブル。 OBJECT_ID()の2番目の引数 探しているオブジェクトのタイプを指定します。この場合、Uを使用します 、これは「ユーザー定義テーブル」用です。

    OBJECT_ID() スキーマスコープのオブジェクトのデータベースオブジェクト識別番号を返します。オブジェクトが存在する場合、NULLは返されないため、テーブルを削除できます。オブジェクトがない場合 存在するか、アクセスできない場合、関数はNULLを返し、DROP TABLE ステートメントは実行されません。

    オプション3:クエリinformation_schema.tables

    テーブルがすでに存在するかどうかを確認する別の方法は、information_schema.tablesをクエリすることです。 ビュー:

    IF EXISTS (
        SELECT * FROM information_schema.tables
        WHERE table_schema = 'dbo' AND table_name = 't1') 	
        DROP TABLE dbo.t1;

    これは前の例と同様のことをします。テーブルの存在をチェックし、存在しない場合にのみテーブルを作成します。

    オプション4:クエリsys.tables

    sys.tablesにクエリを実行することもできます システムカタログビュー:

    IF EXISTS (
        SELECT * FROM sys.tables t 
        JOIN sys.schemas s ON (t.schema_id = s.schema_id) 
        WHERE s.name = 'dbo' AND t.name = 't1') 	
        DROP TABLE dbo.t1;

    SQL Serverには、テーブルの存在を確認する他の多くの方法が用意されています。例については、SQLServerにテーブルが存在するかどうかを確認する6つの方法を参照してください。


    1. PHPでMySQLテーブルの最後に挿入されたIDを取得するにはどうすればよいですか?

    2. オラクル。日付と時刻を出力する方法は?

    3. SQLServer2017でビューを作成する

    4. 12cデータ編集