我有两个名为run_test和file_email的表。我想使用php插入run_test表。它工作正常。当我更新run_test时,id字段也应该在file_email表中更新。
我没有得到如何在php中使用insert语句。
在创建表格时,我使用了这些查询。
create table run_test(id int not null auto_increment,url varchar(255),gh_url varchar(255),platform varchar(255),machine_size varchar(255),browser varchar(255),image_id varchar(255), security_id varchar(255),instance int,timer varchar(255),protocol varchar(255),concurrency int,rampup int,iteration int ,time_out int, cache varchar(255), primary key(id));
create table file_email(id int primary key ,filename varchar(255),email varchar(255), foreign key(id) references run_test(id));
我已经创建了一个触发器,
DELIMITER $$
CREATE TRIGGER triggered_from_runtest
BEFORE insert ON run_test
FOR EACH ROW
BEGIN
INSERT INTO file_email
SET file_email.id = new.id;
END$$
DELIMITER ;
在php中,要使用null插入run_test
的id字段或不输入任何内容,它会在run_test
字段中自动递增,但它不会在file_email
表中更新自动增量值虽然我创造了一个触发器。该领域的成绩为0。
在php中我使用过这样的,
insert into run_test(url,gh_ur,....)values('www.google.com','www.yajana.com',..............);
这也是我尝试过的,
insert into run_test(id,url,gh_ur,....)values(null,'www.google.com','www.yajana.com',..............);
在run_test
中,它会增加但不在file_email
。
我该怎么做?
run_test table:
file_email表是:
答案 0 :(得分:0)
你不需要auto_increment的触发器,如果db schemea设置正确,添加它将为你自动int。
我建议检查你的数据库。你正在做这件事。
https://dev.mysql.com/doc/refman/5.7/en/example-auto-increment.html
答案 1 :(得分:0)
嗨,你需要纠正三件事才能得到你期望的东西。
1)通过指定整数范围(alter table run_test modify column id int(11) auto_increment
来更改run_test表的id列
)。
2)然后更改您的触发器,如下所示,这将在您的file_email表中插入新条目的ID。
DELIMITER $$
CREATE TRIGGER triggered_from_runtest
AFTER insert ON run_test
FOR EACH ROW
BEGIN
set @lastId=(select id from run_test order by id desc limit 1);
INSERT INTO file_email(id) values(@lastId);
END$$
DELIMITER ;
3)删除run_test表中的插入查询(php查询)中给出的id并运行你的文件。
你会得到你的输出!!!!!