SQLのテーブルが存在するかどうかを確認する必要があります。テーブルが存在するかどうかをチェックする際にOBJECT_IDが使用される理由
そうでなければ自動的に作成する必要があります。
は、今私は、このコーディングを調査した:それはどこobject_id = OBJECT_ID
と私はその場所に何を置くべきと言う理由
IF NOT EXISTS (SELECT * FROM sys.objects
WHERE object_id = OBJECT_ID(N'[dbo].[YourTable]') AND type in (N'U'))
BEGIN
CREATE TABLE [dbo].[YourTable](
....
....
....
)
END
誰も説明できますか?
は疑問がOBJECT_IDが何であるかを尋ねることが表示されませんが、でも、このインスタンスでは全く使用されている理由。興味深い質問ですが、これはうまくいくと思われるからです。「IF NOT EXISTS(SELECT * FROM sysobjects WHERE name = 'YourTable')... ' –
sys.objectsのスキーマは、スキーマのシステムビュー - OBJECT_ID()関数は文字列を解析し、正しいobjectIDを取得します(すべてのオブジェクトはSQL Serverで一意のIDを持ちます)。そして、OBJECT_ID()に渡す文字列にスキーマ名を含めることができます。 IMHO - これを行うためのより宣言的な方法は、ISOビューINFORMATION_SCHEMA.TABLESを使用しています(これは私が与えて回答しました) –
'IF OBJECT_ID(N '[dbo]。[YourTable]'、 'U')IS NOT NULL '十分です。 'sys.objects'に対するクエリは不必要です。 –