Seperti yang saya pahami, batasan nilai default bukan bagian dari standar ISO, sehingga tidak muncul di INFORMATION_SCHEMA. INFORMATION_SCHEMA sepertinya pilihan terbaik untuk jenis tugas ini karena lintas platform, tetapi jika informasi tidak tersedia seseorang harus menggunakan tampilan Katalog objek (sys. *) Dan bukan tampilan tabel sistem, yang sudah usang di SQL Server 2005 dan kemudian.
Di bawah ini hampir sama dengan jawaban @ user186476. Ini mengembalikan nama batasan nilai default untuk kolom tertentu. (Untuk pengguna non-SQL Server, Anda memerlukan nama default untuk menghapusnya, dan jika Anda tidak menamai batasan default itu sendiri, SQL Server akan membuat beberapa nama gila seperti "DF_TableN_Colum_95AFE4B5". Untuk mempermudah pengubahan skema Anda di masa mendatang, selalu beri nama batasan Anda secara eksplisit!)
-- returns name of a column's default value constraint
SELECT
default_constraints.name
FROM
sys.all_columns
INNER JOIN
sys.tables
ON all_columns.object_id = tables.object_id
INNER JOIN
sys.schemas
ON tables.schema_id = schemas.schema_id
INNER JOIN
sys.default_constraints
ON all_columns.default_object_id = default_constraints.object_id
WHERE
schemas.name = 'dbo'
AND tables.name = 'tablename'
AND all_columns.name = 'columnname'
sys
tabel, dan mudah diingat.Anda dapat menggunakan yang berikut ini untuk mempersempit hasil lebih lanjut dengan menentukan Nama Tabel dan Nama Kolom yang terkait dengan Batasan Default:
sumber
Tampaknya tidak ada nama Batasan Default dalam
Information_Schema
tampilan.gunakan
SELECT * FROM sysobjects WHERE xtype = 'D' AND name = @name
untuk menemukan batasan default berdasarkan namasumber
Skrip di bawah ini mencantumkan semua batasan default dan nilai default untuk tabel pengguna dalam database yang sedang dijalankan:
sumber
Jika Anda ingin mendapatkan batasan berdasarkan nama kolom atau tabel, atau Anda ingin mendapatkan semua batasan dalam database, lihat jawaban lain. Namun, jika Anda hanya mencari apa yang ditanyakan pertanyaan, yaitu, untuk "menguji jika batasan default tertentu ada ... dengan nama batasan" , maka ada cara yang jauh lebih mudah.
Berikut adalah jawaban bukti masa depan yang tidak menggunakan tabel
sysobjects
atausys
tabel lain sama sekali:sumber
sumber
Apakah kolom COLUMN_DEFAULT INFORMATION_SCHEMA.COLUMNS adalah yang Anda cari?
sumber
sumber
Necromancing.
Jika Anda hanya perlu memeriksa apakah ada batasan
default ( batasan default mungkin memiliki nama berbeda di DB yang dikelola dengan buruk),
gunakan INFORMATION_SCHEMA.COLUMNS (default_kolom):
Jika Anda ingin memeriksa hanya dengan nama kendala:
Dan yang tak kalah pentingnya, Anda bisa membuat tampilan bernama
INFORMATION_SCHEMA.DEFAULT_CONSTRAINTS:
sumber
Saya tidak berpikir itu ada di INFORMATION_SCHEMA - Anda mungkin harus menggunakan sysobjects atau tabel / tampilan terkait yang ditinggalkan.
Anda akan mengira akan ada jenis untuk ini di INFORMATION_SCHEMA.TABLE_CONSTRAINTS, tetapi saya tidak melihatnya.
sumber
Mungkin karena pada beberapa DBMS SQL lain, "batasan default" sebenarnya bukan batasan, Anda tidak akan menemukan namanya di "INFORMATION_SCHEMA.TABLE_CONSTRAINTS", jadi taruhan terbaik Anda adalah "INFORMATION_SCHEMA.COLUMNS" seperti yang telah disebutkan orang lain.
(SQLServer-ignoramus di sini)
Satu-satunya alasan yang dapat saya pikirkan ketika Anda harus mengetahui nama "kendala default" adalah jika SQLServer tidak mendukung
"ALTER TABLE xxx ALTER COLUMN yyy SET DEFAULT..."
perintah. Tapi kemudian Anda sudah berada di zona non-standar dan Anda harus menggunakan cara khusus produk untuk mendapatkan apa yang Anda butuhkan.sumber
Bagaimana jika menggunakan kombinasi CHECK_CONSTRAINTS dan CONSTRAINT_COLUMN_USAGE:
sumber
Saya menggunakan skrip folllowing untuk mengambil semua default (sp_binddefaults) dan semua kendala default dengan skrip berikut:
sumber
Tampilan Katalog Objek : sys.default_constraints
Tampilan skema informasi
INFORMATION_SCHEMA
sesuai dengan ANSI, tetapi batasan default bukan bagian dari standar ISO. Microsoft SQL Server menyediakan tampilan katalog sistem untuk mendapatkan informasi tentang metadata objek SQL Server.sys.default_constraints
tampilan katalog sistem yang digunakan untuk mendapatkan informasi tentang batasan default.sumber