[解決済み] INFORMATION_SCHEMAを使用してデフォルトの制約を見つけるにはどうしたらいいですか?
2022-07-20 10:45:39
質問
与えられたデフォルト制約が存在するかどうかをテストしようとしています。sysobjectsテーブルではなく、より標準的なINFORMATION_SCHEMAを使用したいと思っています。
以前、テーブルと主キー制約をチェックするためにこれを使用したことがありますが、デフォルト制約はどこにも見当たりません。
ないのでしょうか?(MS SQL Server 2000を使用しています)。
EDIT: 制約名で取得したいのですが。
どのように解決するのですか?
私の理解では、デフォルト値制約はISO標準の一部ではないので、INFORMATION_SCHEMAに表示されません。INFORMATION_SCHEMA はクロスプラットフォームなので、この種のタスクに最適のように思えますが、情報が利用できない場合は、SQL Server 2005 以降では非推奨のシステム テーブル ビューの代わりにオブジェクト カタログ ビュー (sys.*) を使用する必要があります。
以下は @user186476 さんの回答とほぼ同じです。これは、指定された列のデフォルト値制約の名前を返します。(SQL Server 以外のユーザーの場合、デフォルト制約を削除するにはデフォルトの名前が必要で、デフォルト制約に自分で名前をつけないと、SQL Server は "DF_TableN_Colum_95AFE4B5" のようなおかしな名前を作成します)。将来的にスキーマを変更しやすくするために、常に制約に明示的に名前を付けてください!)
-- 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'
関連
-
[解決済み] FOREIGN KEY制約で参照されているため、テーブルを切り捨てることができないのですか?
-
[解決済み] SQL ServerでSELECTからUPDATEする方法とは?
-
[解決済み] SQL Server の DateTime データ型から日付だけを返す方法
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] MySQLで'insert if not exists'を行うにはどうしたらいいですか?
-
[解決済み] SQL Serverでレコードを削除した後、IDシードをリセットする。
-
[解決済み] SQL/mysql - Select distinct/UNIQUE but return all column?
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】SQLデフォルト制約の名前を知らずに削除する方法は?
-
[解決済み】MySQLで外部キー制約を追加できない
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Sqlサーバーに制約が存在するかどうかを確認する方法は?
-
org.postgresql.util.PSQLException: ERROR: リレーション "userinfo" の列 "loginid" が存在しません。
-
[解決済み] SQLサーバーでNULL = NULLがfalseに評価される理由
-
[解決済み] データベースのインデックス作成はどのように行われるのですか?[クローズド]
-
[解決済み] 各GROUP BYグループの最初の行を選択しますか?
-
[解決済み] SQL Server - 挿入された行のIDを取得するための最良の方法は?
-
[解決済み] INNER JOIN ON vs WHERE句
-
[解決済み] SQLの複数列の順序付け
-
[解決済み] SQL Serverで結果をページ分割する最も良い方法は何ですか?
-
[解決済み] SQLのインデックスとは何ですか?