私はさまざまなテーブルを持つ MS SQL DB を持っていますが、特に 1 つのフィールドが私を悩ませています。
データ型は varchar(100) に設定されていますが、フィールドは 60 文字に制限されています。
60 文字を超える文字列をフィールドに入力しようとすると、「文字列またはバイナリ データが切り捨てられます」という例外が発生します。文字列は明示的に設定されたデータ型よりも短いですが、それでも例外がスローされます。
おそらくこれを行うDB設定はありますか?明示的に設定されたデータ型が上書きされる原因は何ですか?
編集:
トリガーは値をコピーしたり、別のテーブルに挿入したりせず、データも使用しません。- (正しくない)
60 文字未満の文字列は正常に機能します。
varchar(100) を持つすべての列で同じ問題が発生しますが、他のすべての列は正しい値を受け入れます。varchar(10) 列は正常に機能します。
60 文字を超える文字列でフィールドを更新しようとすると、このテーブルのどの行でも例外がスローされます。
SQL Server Management Studio を使用して、データをフィールドに直接挿入しようとしています。
関連するパディングはありません。
答え:
列が 60 に設定された 2 番目のテーブルがありました。更新トリガーは、データを「非正規化」テーブルに挿入するストアド プロシージャを呼び出しました。
すべての助けをありがとう。