首页 > 解决方案 > 在mysql中更新时重复条目

问题描述

当我在显示时在 tb_penerimaan 中插入 1 条记录时,出现 1 条记录

 MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
| no_servis   | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan    | kelengkapan | dp   | status    | solusi         | harga | presentase | nama  |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
| SER00000001 | 2019-01-31 | PE000001       | ASUS           | X453SA          | CVT122   | gsdggfddfg | dfgfgd      | 5000 | Di Servis | Belum Diservis |     0 | 15         | Anggi |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+

并插入更多记录出现

MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
| no_servis   | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan    | kelengkapan | dp     | status    | solusi         | harga | presentase | nama  |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
| SER00000001 | 2019-01-31 | PE000001       | ASUS           | X453SA          | CVT122   | gsdggfddfg | dfgfgd      |   5000 | Di Servis | Belum Diservis |     0 | 15         | Anggi |
| SER00000002 | 2019-02-01 | PE000002       | Sharp          | Aquos           | 305SH    | bootloop   | charger     | 123000 | Di Servis | Belum Diservis |     0 | 15         | Anggi |
| SER00000001 | 2019-01-31 | PE000001       | ASUS           | X453SA          | CVT122   | gsdggfddfg | dfgfgd      |   5000 | Di Servis | Belum Diservis |     0 | 15         | saya  |
| SER00000002 | 2019-02-01 | PE000002       | Sharp          | Aquos           | 305SH    | bootloop   | charger     | 123000 | Di Servis | Belum Diservis |     0 | 15         | saya  |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+    

当我更新记录显示错误

MariaDB [sijarvis]> UPDATE tb_penerimaan SET no_servis='SER00000002',tgl_terima='2019-02-01',kode_pelanggan='PE000002',nama_perangkat='Sharp',model_perangkat='Aquos',no_model='305sh',keluhan='bootloop',kelengkapan='charger',status='Di Servis',solusi='Instal RAM',harga='15000',presentase='15';
ERROR 1062 (23000): Duplicate entry 'SER00000002' for key 'PRIMARY'

当 tb_penerimaan 有 1 条记录时,我可以更新记录。当 tb_penerimaan 有 2 条或更多记录时,出现错误Duplicate entry 'SER00000002' for key 'PRIMARY'

标签: phpmysql

解决方案


在您当前的 Update 语句中,您正在尝试更新所有行。但这是不可能的,因为no_servis必须是独一无二的。正确的是

UPDATE tb_penerimaan SET tgl_terima='2019-02-01', kode_pelanggan='PE000002', nama_perangkat='Sharp', model_perangkat='Aquos', no_model='305sh', keluhan='bootloop', kelengkapan='charger', status='Di Servis', solusi='Instal RAM', harga='15000', presentase='15'
WHERE no_servis = 'SER00000002';

推荐阅读