Php 防止在MySql中插入匹配行
我在MySql数据库中有一个表。我想防止在MySql中插入匹配的行。就像我在一个表中有4列一样。我不想插入任何具有这4列匹配值的行。我试图在下面说明这一点Php 防止在MySql中插入匹配行,php,mysql,Php,Mysql,我在MySql数据库中有一个表。我想防止在MySql中插入匹配的行。就像我在一个表中有4列一样。我不想插入任何具有这4列匹配值的行。我试图在下面说明这一点 My table ---------- product_name| product_sku |product_quantity| product_price ---------- Computer | comp_007 | 5 | 500 我想防止再次插入同一行。我如何使用MySql查询做到这一点
My table
----------
product_name| product_sku |product_quantity| product_price
----------
Computer | comp_007 | 5 | 500
我想防止再次插入同一行。我如何使用MySql查询做到这一点
更新
我不想再插入
但我想在下面插入行
在相关列上创建组合的唯一键/复合键:
ALTER TABLE `table` ADD UNIQUE (
`product_name` ,
`product_sku` ,
`product_quantity`,
`product_price`
);
任何插入重复行的尝试都将导致MySQL错误。在相关列上创建组合的唯一键/复合键:
ALTER TABLE `table` ADD UNIQUE (
`product_name` ,
`product_sku` ,
`product_quantity`,
`product_price`
);
任何插入重复行的尝试都将导致MySQL错误。如果可能,您应该在列中添加一个唯一键:
ALTER TABLE `table_name`
ADD UNIQUE INDEX `ix_name` (`product_name`, `product_sku`, `product_quantity`, `product_price`);
然后使用插入忽略:
INSERT IGNORE INTO table_name (product_name, product_sku, product_quantity, product_price) VALUES (value1, value2, value3, value4);
如果记录是唯一的MYSQL
像往常一样插入它,如果记录是重复的,那么IGNORE
关键字将放弃插入而不产生错误
如果可能,您应该在列中添加一个唯一键:
ALTER TABLE `table_name`
ADD UNIQUE INDEX `ix_name` (`product_name`, `product_sku`, `product_quantity`, `product_price`);
然后使用插入忽略:
INSERT IGNORE INTO table_name (product_name, product_sku, product_quantity, product_price) VALUES (value1, value2, value3, value4);
如果记录是唯一的MYSQL
像往常一样插入它,如果记录是重复的,那么IGNORE
关键字将放弃插入而不产生错误
最简单的方法是使您的列具有唯一性。对于不需要的插入,您的MySQL驱动程序应该抛出一个异常,您可以处理该异常 从域逻辑的角度来看,这是一种糟糕的做法,因为异常永远不应该处理预期的行为。顺便说一下,您的DB表可以使用主键 因此,要获得更好的解决方案,您的方法可以是: -定义唯一字段(SKU似乎合适);考虑将其用作主键 -对于MySQL,使用REPLACE语句:
REPLACE INTO your_tablename
SET product_name='the name'
-- and so on for other columns
WHERE product_sku = 'whatever_sku';
REPLACE的任务是尝试插入,如果PK存在,则执行更新。最简单的方法是使列唯一。对于不需要的插入,您的MySQL驱动程序应该抛出一个异常,您可以处理该异常 从域逻辑的角度来看,这是一种糟糕的做法,因为异常永远不应该处理预期的行为。顺便说一下,您的DB表可以使用主键 因此,要获得更好的解决方案,您的方法可以是: -定义唯一字段(SKU似乎合适);考虑将其用作主键 -对于MySQL,使用REPLACE语句:
REPLACE INTO your_tablename
SET product_name='the name'
-- and so on for other columns
WHERE product_sku = 'whatever_sku';
REPLACE的任务是尝试插入,如果PK存在,则执行更新。您是否了解我的问题???@abuab您是否尝试了我的解决方案?这将起作用,你也可以查看我在答案中发布的SQLFiddle链接。你收到我的问题了吗???@Abuau你尝试过我的解决方案了吗?这将起作用,您也可以检查我在答案中发布的SQLFiddle链接。
INSERT IGNORE INTO table_name (product_name, product_sku, product_quantity, product_price) VALUES (value1, value2, value3, value4);
REPLACE INTO your_tablename
SET product_name='the name'
-- and so on for other columns
WHERE product_sku = 'whatever_sku';