1

したがって、データベースはすでに作成されていますが、テーブルのフィールドにデフォルト値を追加する必要があります。テーブルと制約の半分を削除せずにこれを行う方法を知りたいです。

私はオンラインで調べました、そしてそれはこれを使うと言いました:

ALTER TABLE TABLE_NAME
ALTER COLUMN ColumnName
SET DEFAULT 1234;

ただし、これを使用してみたところ、「キーワード「SET」の近くの構文が正しくありません」というメッセージが表示されます。私はひどく明白な何かを逃していますか?

ああ、それが何かを変えるなら、私が編集しようとしている列が外部キーであることを付け加えるべきだと思います。

よろしくお願いします、エリー

4

4 に答える 4

1
-- ============================ 
-- Create default constraint
-- ============================ 

ALTER TABLE <schema_name, sysname, dbo>.<table_name, sysname, table_name>
   ADD CONSTRAINT df_<column_name, sysname, column_name>
   DEFAULT <default_expression, sysname, 0>
   FOR <column_name, sysname, column_name>
GO

外部キーを追加する必要がある場合

ALTER TABLE Products WITH CHECK 
ADD CONSTRAINT [FK_Prod_Man] FOREIGN KEY(ManufacturerID)
REFERENCES Manufacturers (ID);
于 2012-05-21T13:33:33.413 に答える
1

下位互換性ビューの代わりにカタログビューを使用して、列にデフォルトが既に定義されているかどうかを確認するためのメソッドを (@Romii の要求で) 提供するだけです。

IF NOT EXISTS
(
  SELECT 1 FROM sys.default_constraints AS dc
    INNER JOIN sys.columns AS c
    ON dc.parent_object_id = c.[object_id]
    AND dc.parent_column_id = c.column_id
    WHERE dc.parent_object_id = OBJECT_ID('dbo.TableName')
    AND c.name = 'ColumnName'
)
BEGIN
  ALTER TABLE dbo.TableName
    ADD CONSTRAINT DF_TableName_ColumnName
    DEFAULT 'whatever' FOR ColumnName;
END
于 2012-05-21T13:51:47.983 に答える
0

既存の列にデフォルトの制約を追加するには、ALTER TABLE次のようにコマンドを使用します。

ALTER TABLE <TableName>
 add constraint <ConstraintName>
  default <DefaultValue> for <TargetColumn>

例:

ALTER TABLE Pages
 add constraint DF_Pages__Link
  default 'asdf' for Link

(デフォルトの制約に対する私の命名規則はDF_ + tablename + __ + column name)

于 2012-05-21T13:38:29.487 に答える
0

次のクエリを使用して、そのテーブルの列に既定の制約が既に定義されているかどうかを確認します。

SELECT d.definition ,c.name,d.name
FROM sys.default_constraints AS d
INNER JOIN sys.columns AS c
ON d.parent_column_id = c.column_id
WHERE d.parent_object_id = OBJECT_ID(N'[dbo].[TableName]', N'U')
AND c.name = 'ColumnName';

テーブルの列にデフォルトの制約を追加する構文。

ALTER TABLE {TABLENAME} 
ADD {COLUMNNAME} {TYPE} {NULL|NOT NULL} 
CONSTRAINT {CONSTRAINT_NAME} DEFAULT {DEFAULT_VALUE}

サンプルクエリ:

ALTER TABLE TABLE_NAME
ADD CONSTRAINT DF_TABLENAME_ColumnName
DEFAULT 1234 FOR ColumnName;
于 2012-05-21T13:35:37.553 に答える