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
表中有更多的列,这将更加困难
您应该阅读有关触发器的更多信息:
这是否回答了您的问题?听起来你想要一个触发器或一个单独的插入。好的,谢谢你。。。