如何实现插入Table A时自动将ID同步插入Table B?
解决方案:用触发器实现自动同步ID
主外键关联只能约束数据一致性(比如B的ID必须存在于A中),没法自动帮你往B里插数据,要实现插入A时自动同步ID到B,用触发器就可以搞定。
以MySQL为例的实现步骤
1. 创建触发器
这个触发器会在A表执行插入操作后,自动把新插入的ID写入B表:
DELIMITER // CREATE TRIGGER after_insert_A AFTER INSERT ON A FOR EACH ROW BEGIN INSERT INTO B (ID) VALUES (NEW.ID); END // DELIMITER ;
2. 验证效果
执行你的插入语句:
INSERT INTO A (ID, random1, random2) VALUES (123, 'Value2', 'Value3');
查询A表:
SELECT * FROM A;
返回结果:
| ID | random1 | random2 | |:----|:-------:|--------:| | 123 | Value2 | Value3 |
查询B表:
SELECT * FROM B;
返回结果:
| ID | random3 | random4 | |:----|:-------:|--------:| | 123 | NULL | NULL |
其他数据库适配(以SQL Server为例)
如果用的是SQL Server,触发器语法稍有不同:
CREATE TRIGGER after_insert_A ON A AFTER INSERT AS BEGIN INSERT INTO B (ID) SELECT ID FROM inserted; END;
可选:加上主外键保证数据一致性
虽然主外键不能自动插数据,但建议加上来避免B表出现A表不存在的ID:
-- 给A表ID加主键 ALTER TABLE A ADD PRIMARY KEY (ID); -- 给B表ID加外键关联A表ID ALTER TABLE B ADD FOREIGN KEY (ID) REFERENCES A(ID);
内容的提问来源于stack exchange,提问作者NecRaul
相关产品推荐
相关产品推荐

