[英]mysql insert values select not exist
How to make this work I'm preventing INSERT
in a loop
? 如何使此工作阻止loop
INSERT
? i get sql error code 1093
with this, and it's array result: 我得到这个sql error code 1093
,它的数组结果:
INSERT INTO kelengkapan_berkas (id_buyer, nama_berkas) VALUES
('1', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '1'))),
('2', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '2'))),
('3', (SELECT jenis_berkas.nama_berkas FROM jenis_berkas WHERE id_job = '1' AND NOT EXISTS (SELECT id_buyer FROM kelengkapan_berkas WHERE id_buyer = '3')))
My looping code work but i need to avoid because of the connection storming XD: 我的循环代码有效,但是由于连接风暴XD,我需要避免:
while($rows=mysqli_fetch_array($res)){
$sql="INSERT INTO kelengkapan_berkas
(id_buyer, nama_berkas)
SELECT '$rows[id]',
jenis_berkas.nama_berkas
FROM jenis_berkas
WHERE id_job = '$rows[job]' AND NOT EXISTS
(SELECT * FROM kelengkapan_berkas WHERE id_buyer = '$rows[id]')";
$result=mysqli_query($con,$sql);}
or any idea to do this with trigger or procedure? 或使用触发器或过程来执行此操作的任何想法? thx 谢谢
This restriction is documented in the MySQL manual : MySQL手册中记录了此限制:
Currently, you cannot update a table and select from the same table in a subquery.
As a workaround, you can wrap the sub-query in another sub-query(Nested) and avoid that error. 解决方法是,可以将子查询包装在另一个子查询(嵌套)中,避免出现该错误。
INSERT INTO kelengkapan_berkas (id_buyer, nama_berkas) VALUES
('1', (SELECT NAME (SELECT jenis_berkas.nama_berkas NAME FROM jenis_berkas WHERE id_job = '1') ,.....
Table design. 表设计。
Make ID buyer a unique index and trap exceptions in your code. 使ID购买者成为唯一索引,并在代码中捕获异常。
Then you can only add id_buyer=1 once. 然后,您只能添加一次id_buyer = 1。
If you really don't want to fail: 如果您真的不想失败:
select count(*) as num where id_buyer=1
#get num into your code
if(num==0)
insert
step 1: select the records from the db, and then constructed into array, step 2: finally you can do insert query from above selected records, 步骤1:从数据库中选择记录,然后构建为数组,步骤2:最后,您可以从上面选择的记录中插入查询,
this should be easy 这应该很容易
Sorry guys I'm new in this stuff but actually the point is I want to make sure all new record will be inserted to new table, using php is a bit hard n causing looping that cause slow down so I do trigger with MySQL and the result is the same with what I want. 抱歉,我是新手,但实际上,我想确保所有新记录都将插入到新表中,使用php有点困难n会导致循环变慢,所以我确实使用MySQL和结果和我想要的一样。
DELIMITER |
CREATE DEFINER = 'root'@'localhost' TRIGGER `copy_berkas`
AFTER INSERT
ON `buyer`
FOR EACH ROW
INSERT INTO kelengkapan_berkas
(id_buyer, nama_berkas)
SELECT NEW.id, jenis_berkas.nama_berkas
FROM jenis_berkas WHERE jenis_berkas.id_job = NEW.job|
DELIMITER ;
Sorry for the Trouble 抱歉,添麻烦了
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.