MySQL自动分配外键ID

MySQL自动分配外键ID,mysql,sql,python-3.x,mariadb,innodb,Mysql,Sql,Python 3.x,Mariadb,Innodb,我有一个名为results的主表。例如 CREATE TABLE results ( r_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, r_date DATE NOT NULL, system_id INT NOT NULL, FOREIGN KEY (system_id) REFERENCES systems(s_id) ON UPDATE CASCADE ON DELETE CASCADE ); 系统表如下所示:

我有一个名为
results
的主表。例如

CREATE TABLE results (
    r_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    r_date DATE NOT NULL,
    system_id INT NOT NULL,
    FOREIGN KEY (system_id) REFERENCES systems(s_id) ON UPDATE CASCADE ON DELETE CASCADE
);
系统表如下所示:

 CREATE TABLE systems (
    s_id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    system_name VARCHAR(50) NOT NULL UNIQUE
);
我正在用Python编写一个带有MySQL连接器的程序。是否有方法将数据添加到
系统
表中,然后将生成的
s_id
自动分配到
结果
表中


我知道我可以
插入
系统
,然后再次调用该表,查看
系统名称的ID是什么,要添加到
结果
表中,但我认为SQL中可能存在一些我不知道的怪癖,可以通过减少对DB的调用来简化工作?

您可以在触发器中执行以下操作:

CREATE TRIGGER t AFTER INSERT ON systems
FOR EACH ROW
  INSERT INTO results SET r_date = NOW(), system_id = NEW.s_id;
这是可能的,因为
结果
表中的列很容易从触发器可以访问的数据中填充。自动增量会自动填充,无需填充其他列。如果
results
表中有更多的列,这将更加困难

您应该阅读有关触发器的更多信息:


这是否回答了您的问题?听起来你想要一个触发器或一个单独的插入。好的,谢谢你。。。