在 MySQL 中实现自增复合主键
MySQL InnoDB 表支持复合主键,可以使用多列来识别唯一行。但是,需要注意的是,只有一列可以自动递增,并且必须将其指定为主键定义的一部分。
当尝试使用一个自动递增列创建复合主键并且两个外键,用户可能会遇到错误“ERROR 1075:不正确的表定义;只能有一个自动列,并且必须将其定义为键”。
要克服此问题并实现所需的组合通常建议使用主键、触发器或过程。但是,为了简单起见,另一种方法是使用以下 MySQL 触发器:
<code class="sql">DELIMITER $$ CREATE TRIGGER xxx BEFORE INSERT ON issue_log FOR EACH ROW BEGIN SET NEW.sr_no = ( SELECT IFNULL(MAX(sr_no), 0) + 1 FROM issue_log WHERE app_id = NEW.app_id AND test_id = NEW.test_id ); END $$ DELIMITER ;</code>
此触发器会自动计算并为共享相同“app_id”和“test_id”的新行分配递增的“sr_no”值' 值。通过实现此触发器,您可以通过自动增量列实现所需的复合主键。
请记住,触发器需要正确的处理以确保数据完整性并避免竞争条件。建议彻底测试和维护触发器,以防止任何意外行为或性能瓶颈。
以上是MySQL中如何实现带自增列的复合主键?的详细内容。更多信息请关注PHP中文网其他相关文章!