DB に対して実行するときに列を取り、それを NOT NULL に設定するスクリプトを作成しようとしています。
列は VARCHAR(50) であると想定されており、変更されていないことがわかっていれば簡単なことですが、誰も長さを変更していないとは確信できないので、たとえば、他の誰かが 100 に増やした場合、列のサイズを縮小しないようにしてください。
私はこのようなことができることを望んでいましたが、うまくいかないようです(NULL値がないことをすでに確認していると仮定します):
DECLARE @myColumnLength INT
SET @myColumnLength = (
SELECT character_maximum_length
FROM information_schema.columns
WHERE table_name = 'mytable'
AND column_name = 'mycolumn'
)
ALTER TABLE mytable
ALTER COLUMN mycolumn VARCHAR(@myColumnLength) NOT NULL
何か案は?私は間違った方法で問題を攻撃していますか? 列のサイズを変更せずに列を NOT NULL に設定する方法があるのは論理的に思えますが、私の Google-fu は今日失敗しています。