我有一张主桌叫 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连接器的程序。有没有办法把数据添加到 systems
然后自动分配生成的 s_id
到 results
table?
我知道我可以 INSERT
进入 systems
,然后再次调用该表以查看 s_name
,添加到 results
但我认为sql中可能有一些我不知道的怪癖,可以通过减少对db的调用来简化工作?
1条答案
按热度按时间ruarlubt1#
你可以在这样一个触发器中执行你所描述的操作:
这是可能的,因为
results
表很容易从触发器可以访问的数据中填充。自动增量会自动填充,不需要填充其他列。如果你有更多的列在results
table,这会更难。您应该阅读更多关于触发器的内容:
https://dev.mysql.com/doc/refman/8.0/en/create-trigger.html
https://dev.mysql.com/doc/refman/8.0/en/triggers.html