[解決済み] テーブル作成時のデフォルト制約の宣言
質問
Microsoft SQL server 2000 で、GUI を使用する代わりにコードを記述することによって新しいテーブルを作成しています。
これは私が実際に使用しているコードで、問題なく動作します。
CREATE TABLE "attachments"
(
"attachment_id" INT NOT NULL,
"load_date" SMALLDATETIME NOT NULL,
"user" VARCHAR(25) NOT NULL,
"file_name" VARCHAR(50) NOT NULL,
CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"),
CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"),
CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE())
)
主キー、外部キー、およびチェック制約を単独で指定したのは、この方法で名前を定義できるからです。そうしないと、インラインで宣言すると SQL Server がランダムな名前を生成してしまい、私はそれが好きではありません。
インターネット上の情報と Microsoft SLQ Server Management Studio がどのように制約を作成するかを見て、それがインラインとそれ自身の両方で作成できることを理解しました。
"load_date" SMALLDATETIME NOT NULL DEFAULT GETDATE()
または
CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"
インラインメソッドは問題なく動作しますが、コンストラクタの名前は通常通りランダムに生成され、スタンドアロンメソッドは次のようにエラーを投げます。
Incorrect syntax near 'FOR'.
.
また、テーブルを作成してから
ALTER
を実行すると、コマンドは動作します。
ALTER TABLE "attachments"
ADD CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"
参考までに、私が実行しようとしているコードの全容を以下に示します。
CREATE TABLE "attachments"
(
"attachment_id" INT NOT NULL,
"load_date" SMALLDATETIME NOT NULL,
"user" VARCHAR(25) NOT NULL,
"file_name" VARCHAR(50) NOT NULL,
CONSTRAINT "pk_attachments" PRIMARY KEY ("attachment_id"),
CONSTRAINT "fk_users" FOREIGN KEY ("user") REFERENCES "users" ("user"),
CONSTRAINT "ch_load_date" CHECK ("load_date" < GETDATE()),
CONSTRAINT "df_load_date" DEFAULT GETDATE() FOR "load_date"
)
私はここで完全に途方に暮れています。私がやろうとしていることは不可能なのでしょうか、それとも何か間違ったことをしているのでしょうか?
編集します。
David Mは、インライン構文を使用して名前付きデフォルト制約を追加する方法を示しましたが、私はまだスタンドアロン構文が完全に間違っているか、私のせいであるかを理解しようとしています。
どのように解決するのですか?
カラムの作成とインラインで行う。
[load_date] SMALLDATETIME NOT NULL
CONSTRAINT [df_load_date] DEFAULT GETDATE()
を使えないリーダーが多いので、引用符ではなく角括弧を使っています。
QUOTED_IDENTIFIERS
をデフォルトで使用できないためです。
関連
-
[解決済み] SQL Server テーブルにカラムが存在するかどうかを確認する方法は?
-
[解決済み] SQL Server にテーブルが存在するかどうかを確認する
-
[解決済み] NULLも許容するユニークな制約を作成するにはどうしたらいいですか?
-
[解決済み] T-SQLです。結合で削除する行を選択する
-
[解決済み] TSQLで改行文字を置換する
-
[解決済み】SQL Serverで既存のテーブルにデフォルト値を持つカラムを追加する
-
[解決済み】T-SQLのCASE句。WHEN NULLを指定する方法
-
[解決済み] sp_executesqlの結果を変数に取得する方法は?
-
[解決済み] T-SQL - デフォルトのパラメータを持つ関数
-
[解決済み] INFORMATION_SCHEMAを使用してデフォルトの制約を見つけるにはどうしたらいいですか?
最新
-
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で2つの値の最小値を取得する
-
[解決済み] T-SQLです。結合で削除する行を選択する
-
[解決済み】T-SQLのCASE句。WHEN NULLを指定する方法
-
[解決済み] T-SQLストアドプロシージャでオプションのパラメータを使用するにはどうすればよいですか?
-
[解決済み] sp_executesqlの結果を変数に取得する方法は?
-
[解決済み] T-SQL - デフォルトのパラメータを持つ関数
-
[解決済み] バッチ」とは何か、なぜ「GO」が使われるのか?
-
[解決済み] Microsoft tSQL で行が見つからなかった場合に値を返します。
-
[解決済み] 関数がすでに存在する場合、その関数を削除するにはどうすればよいですか?
-
[解決済み] カンマを区切り文字として複数行を1行に変換する[重複]。