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

mysqlデータベースへの重複エントリを回避するための最良の方法

    最初のステップは、テーブルに一意のキーを設定することです。

    ALTER TABLE thetable ADD UNIQUE INDEX(pageid, name);
    

    次に、重複がある場合に何をしたいかを決定する必要があります。すべきこと:

    1. 無視しますか?

      INSERT IGNORE INTO thetable (pageid, name) VALUES (1, "foo"), (1, "foo");
      
    2. 以前に入力したレコードを上書きしますか?

      INSERT INTO thetable (pageid, name, somefield)
      VALUES (1, "foo", "first")
      ON DUPLICATE KEY UPDATE (somefield = 'first')
      
      INSERT INTO thetable (pageid, name, somefield)
      VALUES (1, "foo", "second")
      ON DUPLICATE KEY UPDATE (somefield = 'second')
      
    3. カウンターを更新しますか?

      INSERT INTO thetable (pageid, name)
      VALUES (1, "foo"), (1, "foo")
      ON DUPLICATE KEY UPDATE (pagecount = pagecount + 1)
      


    1. SCUMMダッシュボードを使用したMySQLレプリケーションの効果的な監視:パート2

    2. シーケンスのPostgreSQLの次の値?

    3. 主要なワイルドカードシークのフォローアップ#1

    4. Oracleのテーブルで重複する値を見つけるにはどうすればよいですか?