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

重複するキーの更新の実装/設計について

    まず、(usersessid, product_id)に一意のインデックスが必要です 。自動生成された列idを実際に使用しているかどうかはわかりません 、ただしそうでない場合は、主キーを(usersessid, product_id)に変更する必要があります。 。次に、別のUPDATEを実行する代わりに クエリ、単一のINSERTのみを実行します クエリ:

    INSERT INTO sessionBasket (userid, usersessid, date_added, product_id, qty, notes)
    VALUES (?, ?, now(), ?, ?, ?)
    ON DUPLICATE KEY UPDATE qty = qty + ?
    

    一意のインデックスがどのように表示されるかを明確にするために:

    CREATE UNIQUE INDEX sessionBasket_uniq ON sessionBasket (usersessid, product_id);
    

    または主キー:

    ALTER TABLE sessionBasket ADD CONSTRAINT sessionBasket_pkey PRIMARY KEY (usersessid, product_id);
    



    1. MySQLの区切り文字

    2. Java SQLServer2012データベースを開くことができませんエラー

    3. PostgreSQL移行用のトップオープンソースツール

    4. mysql_connect():ターゲットマシンがアクティブに拒否したため、接続できませんでした