如何解决MySQL自动分配外键ID
我有一个名为 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
表?
我知道我可以将 INSERT
转换为 systems
,然后再次调用该表以查看 s_name
的 ID 是什么,然后添加到 results
表中但我认为 SQL 中可能存在我不知道的怪癖,通过减少对数据库的调用来使生活更轻松?
解决方法
您可以像这样在触发器中执行您描述的操作:
CREATE TRIGGER t AFTER INSERT ON systems
FOR EACH ROW
INSERT INTO results SET r_date = NOW(),system_id = NEW.s_id;
这是可能的,因为您的 results
表的列很容易从触发器可以访问的数据中填充。自动增量会自行填充,不需要填充额外的列。如果 results
表中有更多列,这会更难。
您应该阅读有关触发器的更多信息:
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。