2011-10-19 6 views
1

テーブルに挿入されたすべてのレコードに一意のランダムな文字列を関連付けるトリガーを作成しようとしています。挿入前に固有のmd5ハッシュを生成するためのトリガー

これまでは、挿入する前に、ハッシュを生成してテーブルに追加するトリガーを作成しました。しかし、私はこの新しいハッシュが私のテーブルのためにユニークであることについてどうすればいいのかと思います。

これまでのところ、私は以下のトリガーを持っていますが、一部が欠落しているユニークを見ることができるよう...

BEGIN 
DECLARE newhash VARCHAR(255); 
SELECT MD5(CONCAT(NOW(),RAND())) INTO newhash; 
SET NEW.`hash` = newhash; 
END 
+0

MD5が壊れているので、代わりにSHA2を使うことをお勧めします。SET NEW.hash = SHA2(CONCAT(salt、RAND())、512) ' – Johan

+0

私は本当に大きなランダムな文字列が必要です。余分な8文字が私にどのように役立つか分かりません。 – titel

+0

何が必要ですか?セキュリティ以外のものはuuid、セキュリティはsha2を使用してください。 – Johan

答えて

1

列がテーブル定義でユニークである必要があり、それはそれです。

いずれにしても、md5(現在は|| rand)を使用してもよろしいですか? nowとrandの合理的な実装では、重複を持つ可能性は非常に低いですが、now()が細かくないか乱数が良い乱数でない場合、特定のシナリオ。

UUID(MySQLがサポートしていると思われるもの:http://dev.mysql.com/doc/refman/5.0/en/miscellaneous-functions.html#function_uuid)など、この種のものには既製のスキームを使用することをお勧めします。

関連する問題