我想要保持数据库记录的不重复,现在有两种方案,一种是给这一个(或多个)字段添加唯一性约束,一种是程序先去查询数据库是否存在给个字段值的记录,再决定是否插入?请问这两种方式该如何抉择?有更好的方式么?
巴扎黑2017-04-18 10:05:43
プログラムに依存して一意性を保証することは信頼できません。これは、同時実行性が高い条件下では、次の 2 つのステップが重複し、挿入が繰り返されるためです。
データベースにレコードがあるか確認します
そうでない場合は、レコード
高洛峰2017-04-18 10:05:43
一意の制約を選択することをお勧めします:
アプリケーションロジックを簡素化します。
一意性制約を確立すると、通常、システムは自動的にインデックスを作成して、クエリのパフォーマンスを向上させながら一意性を確保します。 (PostgreSQL ドキュメント)
一意制約を追加すると、制約にリストされている列または列のグループに一意の B ツリー
インデックスが自動的に作成されます。
伊谢尔伦2017-04-18 10:05:43
作成者はデータベースの目的を理解する必要があります。2 番目のオプションに従ってデータベース システムを開発すると、データベースを直接ファイルとして保存できます。データベースは単純な SQL だけではなく、DBMS として他の多くの機能も提供するため、システムの基盤となるアクセスを最適化しながら、アプリケーションの問題の解決に集中できます。