sql >> データベース >  >> RDS >> Mysql

Railsは同時入力で一意性が失敗することを検証します

    これは非常にまれであり、おそらく非常に不運です。それは可能です。

    読む: https: //github.com/rails/rails/blob/master/activerecord/lib/active_record/validations/uniqueness.rb#L165

    次の点を考慮してください:ユーザーAがフォームを送信する

    • ユーザーAがフォームを送信
    • RailsはデータベースでユーザーAの既存のIDを確認します-見つかりませんでした
    • ユーザーBがフォームを送信します
    • RailsはデータベースでユーザーBの既存のIDをチェックします-見つかりませんでした
    • RailsはユーザーAの記録を保存します
    • RailsはユーザーBのレコードを保存します

    これはすべてミリ秒以内に発生する必要がありますが、技術的には可能です。

    データベースレベル(主キー)で制約を追加することをお勧めします。



    1. データベースがすでに存在するかどうかを確認します

    2. コマンドラインからMySQLデータベース、ユーザー、およびテーブルを管理する方法

    3. GUIDの衝突は可能ですか?

    4. Play Frameworkを使用してSSL経由でリモートMySQLデータベースに接続するにはどうすればよいですか?