Di SQL Server, Anda dapat menggunakan SCHEMA_ID()
berfungsi untuk mengembalikan ID skema yang diberikan. Lebih khusus lagi, fungsi ini mengembalikan ID skema yang terkait dengan nama skema.
Ini seperti SCHEMA_NAME()
kecuali ia mengembalikan ID skema alih-alih nama (dan ia menerima parameter nama alih-alih ID).
Jika Anda tidak meneruskan nama skema ke fungsi, itu mengembalikan ID skema default pemanggil.
Contoh 1 – Kembalikan Skema Default
Berikut adalah contoh yang mengembalikan ID skema default pemanggil.
SELECT SCHEMA_ID() AS Result;
Hasil:
+----------+ | Result | |----------| | 1 | +----------+
Ini mengembalikan ID skema default pemanggil karena saya tidak secara eksplisit menentukan nama skema lainnya.
Ini dia lagi, bersama dengan nama skema.
SELECT SCHEMA_ID() AS [Schema ID], SCHEMA_NAME() AS [Schema Name];
Hasil:
+-------------+---------------+ | Schema ID | Schema Name | |-------------+---------------| | 1 | dbo | +-------------+---------------+
Contoh 2 – Tentukan Skema yang Berbeda
Dalam contoh ini saya secara eksplisit memberikan nama skema ke fungsi.
SELECT SCHEMA_ID('Dimension') AS Result;
Hasil:
+----------+ | Result | |----------| | 6 | +----------+
Ini memberitahu saya bahwa skema yang disebut Dimensi memiliki ID 6.
Contoh 3 – Berpindah Database
Contoh sebelumnya kebetulan dijalankan di database yang memiliki skema bernama Dimension. Jika saya beralih ke database yang berbeda, saya mungkin mendapatkan ID skema yang berbeda, atau tidak ada ID sama sekali.
Ini contoh yang saya maksud.
USE WideWorldImportersDW; SELECT SCHEMA_ID('Dimension') AS Result; USE Music; SELECT SCHEMA_ID('Dimension') AS Result;
Hasil:
Changed database context to 'WideWorldImportersDW'. +----------+ | Result | |----------| | 6 | +----------+ (1 row affected) Changed database context to 'Music'. +----------+ | Result | |----------| | NULL | +----------+ (1 row affected)
Hasil kedua mengembalikan NULL
karena tidak ada skema yang disebut Dimensi dalam database Musik.
Contoh 4 – Dalam Klausa WHERE
Menggunakan SCHEMA_ID()
dalam WHERE
klausa dapat menjadi cara praktis untuk memfilter hasil berdasarkan skema.
Di SQL Server, berbagai tampilan sistem menggunakan schema_id
kolom untuk menyimpan ID skema tetapi bukan nama skema. Oleh karena itu Anda perlu mengetahui ID skema jika Anda akan memfilter hasil berdasarkan skema. Di situlah SCHEMA_ID()
bisa sangat berguna. Ini menyelamatkan Anda dari keharusan bergabung di sys.schemas
lihat hanya untuk mengetahui nama skema.
Berikut ini contoh penggunaan SCHEMA_ID()
dalam WHERE
klausa.
USE WideWorldImportersDW; SELECT name, type_desc FROM sys.objects WHERE schema_id = SCHEMA_ID('Dimension');
Hasil:
Changed database context to 'WideWorldImportersDW'. +----------------------------------------------------+------------------------+ | name | type_desc | |----------------------------------------------------+------------------------| | City | USER_TABLE | | PK_Dimension_City | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_City_City_Key | DEFAULT_CONSTRAINT | | Customer | USER_TABLE | | PK_Dimension_Customer | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Customer_Customer_Key | DEFAULT_CONSTRAINT | | Date | USER_TABLE | | PK_Dimension_Date | PRIMARY_KEY_CONSTRAINT | | Employee | USER_TABLE | | PK_Dimension_Employee | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Employee_Employee_Key | DEFAULT_CONSTRAINT | | Payment Method | USER_TABLE | | PK_Dimension_Payment_Method | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Payment_Method_Payment_Method_Key | DEFAULT_CONSTRAINT | | Stock Item | USER_TABLE | | PK_Dimension_Stock_Item | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Stock_Item_Stock_Item_Key | DEFAULT_CONSTRAINT | | Supplier | USER_TABLE | | PK_Dimension_Supplier | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Supplier_Supplier_Key | DEFAULT_CONSTRAINT | | Transaction Type | USER_TABLE | | PK_Dimension_Transaction_Type | PRIMARY_KEY_CONSTRAINT | | DF_Dimension_Transaction_Type_Transaction_Type_Key | DEFAULT_CONSTRAINT | +----------------------------------------------------+------------------------+ (23 rows affected)