1
私はテーブルに列レベルのチェック制約を作成しようとしています。私は値が列に挿入されていることを確認し、それらが文字であることを確認します。正規表現のための正規表現チェック制約
たとえば、values ('hello','there')
が合格しますが、values ('h3llo','th3r3')
は合格しません。
特定の文字数(下記の表を参照してください)で動作するようになっていますが、動的にしたいと考えています。
私は^[a-zA-Z]+$
も試してみましたが、それはどちらかといえないようです。
単純な表のレイアウトは以下のとおりです。
CREATE TABLE owner
(
owner_id ID IDENTITY(1, 1) PRIMARY KEY,
owner_firstname FIRSTNAME,
owner_lastname LASTNAME,
CONSTRAINT firstname_cc CHECK (owner_firstname LIKE '[a-zA-Z][a-zA-Z][a-zA-Z]'),
CONSTRAINT lastname_cc CHECK (owner_lastname LIKE '[a-zA-Z][a-zA-Z][a-zA-Z]')
);
これを試して、次の文字を挿入しようとすると、 値( 'TEST'、 'LOL'); 次のエラーが引き続き発生します **メッセージ547、レベル16、状態0、行1 INSERTステートメントがCHECK制約 "firstname_cc"と競合しました。競合は、データベース "alcromer"、テーブル "dbo.owner"、列 'owner_firstname'で発生しました。 ステートメントが終了しました。** – RoflWaffle17
@ RoflWaffle17 - そのステートメントはうまく動作します。http://rextester.com/NFYXQ38880 –
それは私のために働いていないようです.....私はあなたのコードをそのままコピーして貼り付けました。上記のリンク。私はまた、次のバージョンを実行している、SQL Server 2012のマイクロソフト(SP3-GDR)(KB3194721) - 11.0.6248.0(X64) \t 2016年9月23日15時49分43秒 \t著作権(c)マイクロソフトコーポレーション \tエンタープライズ版(64ビット)Windows NT 6.2(ビルド9200:)(ハイパーバイザ) –
RoflWaffle17