2017-05-24 9 views
2

データベースに関する私の割り当てを行っています。 MySQLを使用して、私の仕事はいくつかのテーブルを持つデータベースを作成することです。それらの1つは主キーがWIdである労働者のテーブルで、これは16 A-Zと0-9要素の文字列です。 @#$%^など。mysqlのALPHANUMERIC制約を作るには?

create table Worker ( WId  char(16) primary key, 
         Name char(10), 
         Surname char(20),...); 

ありがとう、私はそこに置くことができないような制約を作る必要があります!

あなたは常にエラーを返すように SIGNALキーワードを使用することができます
+1

MySQLはチェック制約をサポートしていないため、トリガーを使用する必要があります。 –

+0

よろしくお願いします。トリガーで確認する方法を教えてください。 – TeamBeam

+1

@TeamBeam SOはコード作成サービスではありません。あなた自身の研究を行い、あなたがそれを稼働させることができないなら、あなたが試みたものを投稿してください。 – Barmar

答えて

1

EDIT 1: @Gordon_linoffコメントに基づいて:あなたはIdが変化することを期待する場合は、ケースにBEFORE INSERTBEFORE UPDATEの両方を行う必要があります。

CREATE TRIGGER myTrigger 
    BEFORE INSERT 
    ON worker 
    FOR EACH ROW 
BEGIN 
    IF NOT (NEW.WId REGEXP '^[A-Za-z0-9]+$') 
    THEN 
     BEGIN  
     SIGNAL sqlstate '45000' set message_text = 'TADA!'; 
     END; 
    END IF; 
END; 
+0

おそらく 'update'トリガーも必要です。 –

+1

@TeamBeamあなたのニーズを満たす場合は質問を閉じることを検討してください – bc004346