2009-07-28 12 views

答えて

7

はい - ちょうどCHECK制約を使用します。

ALTER TABLE myTable 
    ADD CONSTRAINT CK_table_colHasLength CHECK (col1 IS NULL OR col1 <> '') 
0

あなたは、あなたが次の制約を使用して検討する必要がありますスペースしか含まれないものとして空の文字列を定義する場合。かかわらず、それが含まれているどのように多くの - 文字列にスペースのみが含まれている場合len()関数は0を返すこと

ALTER TABLE myTable ADD CONSTRAINT CK_table_colHasLength CHECK 
(col1 is null or len(col1) != 0) 

は注意してください。

-1

これはDB側の問題ではありません。 VS2008のLinq-to-SQLデザイナには、varchar(1)とnvarchar(1)がSystem.StringではなくSystem.Charに誤ってマップされるマッピングバグがあります。空の文字列はvarchar(1)とnvarchar(1)の完全に有効な値ですが、System.Charは空の文字列を許可しません。

回避策として、L2Sデザイナのマッピングを影響を受けるフィールドのSystem.CharからSystem.Stringに変更できます。

を参照してください:あなたは、システム上の制約が必要な場合
http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/e8082fc1-a5be-47bf-9b06-cd1bde19bea0
...と...
http://social.msdn.microsoft.com/Forums/en-US/linqtosql/thread/ac91e587-6e91-454c-9fa2-bab20b7a258c

+0

、その制約はないコードだけで、システムにどこでも永続する必要があります。 – Rhyous

関連する問題