sql >> データベース >  >> RDS >> Sqlserver

主キーで列のデータ型を変更する

    NOT NULLを指定する必要があります ALTER TABLE ... ALTER COLUMNで明示的に それ以外の場合は、デフォルトでNULLを許可します 。これはPK列では許可されていません。

    以下は正常に機能します。

    CREATE TABLE p
    (
    ReferenceID VARCHAR(6) NOT NULL PRIMARY KEY
    )
    
    INSERT INTO p VALUES ('AAAAAA')
    
    ALTER TABLE p ALTER COLUMN ReferenceID VARCHAR(8) NOT NULL
    

    NOT NULLの場合 省略した場合、次のエラーが発生します

    Msg 5074, Level 16, State 1, Line 1
    The object 'PK__p__E1A99A792180FB33' is dependent on column 'ReferenceID'.
    Msg 4922, Level 16, State 9, Line 1
    ALTER TABLE ALTER COLUMN ReferenceID failed because one or more objects access this column.
    

    プログラマティックアプローチで考慮すべきいくつかのことは、することです。 ReferenceIDを参照する外部キーを削除する必要があります 列を一時的に、またNOT NULLを含めないようにしてください for(Non PK)ReferenceID 現在である列 null許容。



    1. PostgreSQLでJSONB値をマージしますか?

    2. Visual StudioでSSISロードを実行しているときにODBC接続が失敗するのに、パッケージ実行ユーティリティを使用して同じパッケージを実行している場合は失敗するのはなぜですか

    3. コロンを使用すると、PHPバインドパラメータデータベースが間違った数のパラメータを呼び出す

    4. ナンバーシリーズジェネレータチャレンジソリューション–パート4