2012-03-22 14 views
1

私は、INSERT値が空の文字列である場合に、列の値をDEFAULTに設定するTRIGGERを作成していました。MySQL - カラムのデフォルト値を取得できますか?

私TRIGGERは、次のようになります。

CREATE TRIGGER column_a_to_default 
BEFORE INSERT ON table 
FOR EACH ROW 
BEGIN 
IF NEW.a = '' THEN 
SET NEW.a = 'some value'; 
END IF; 
END 

私は列のデフォルト値に設定する方法で「何らかの値」を置き換えることができますかどうかを知りたいと思います。すなわち

SET NEW.a = a.DEFAULT 

これは、あなたが

SET NEW.a = DEFAULT(NEW.a) 

EDITのために働く必要がありますおかげ

答えて

3

: それが動作しないように見えます。あなたはまた、

SET NEW.a = DEFAULT(table_name.a) 
+0

うわー、私の周りに検索しようとすることができ、何と擬似コードを見つけることができませんでした

使用この回避策

IF NEW.a = '' THEN SELECT COLUMN_DEFAULT INTO @def FROM information_schema.COLUMNS WHERE table_schema = 'database_name' AND table_name = 'your_table' AND column_name = 'a'; SET NEW.a = @def; END IF; 

は本当に近かったです。ありがとう! – hungerstar

+0

実際には、指定された値がTRIGGERのIF文と一致する場合、 "Column 'a'はnullにはなれません"という警告が表示されます。 – hungerstar

+1

またはそれより良い 'DEFAULT(a)'。 MySQLの['DEFAULT()'](http://dev.mysql.com/doc/refman/5.5/en/miscellaneous-functions.html#function_default)関数を参照してください。 –

関連する問題