外键(Foreign Key)是MySQL中实现表间关联约束的核心机制 ,超值服务器与挂机宝 、外键外键但复合外键需手动创建 引擎限制 :必须使用InnoDB引擎(MyISAM不支持外键)
sql -- 复合外键示例 ALTER TABLE order_items ADD INDEX idx_product (product_id,索引索引ios免越狱外挂安装教程 variant_id), ADD CONSTRAINT fk_order_product FOREIGN KEY (product_id, variant_id) REFERENCES products(id, variant_id);
sql ALTER TABLE 从表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (从表字段) REFERENCES 主表名(主表字段) [ON DELETE 参照动作] [ON UPDATE 参照动作];
假设有用户表和订单表:sql
-- 主表(被引用表)
CREATE TABLE users (
userid INT PRIMARY KEY AUTOINCREMENT,
username VARCHAR(50) NOT NULL
);-- 从表(引用表)
CREATE TABLE orders (
orderid INT PRIMARY KEY, userid INT,
amount DECIMAL(10,2),
CONSTRAINT fkuser FOREIGN KEY (userid)
REFERENCES users(user_id)
ON DELETE CASCADE
);:定义参照动作
CASCADE :级联删除/更新 SET NULL:设为NULL RESTRICT(默认) :阻止操作 NO ACTION:与RESTRICT等效原因
:
- 数据类型不匹配(INT与BIGINT不能互引用)
- 字符集/排序规则不一致
- 引用的添加主键列不是索引排查方法
:
sql SHOW ENGINE INNODB STATUS;避免多层级联(超过3级影响性能) 高频更新的列不宜作为外键 大数据量时考虑禁用外键检查 :
sql SET FOREIGN_KEY_CHECKS = 0; -- 执行批量操作 SET FOREIGN_KEY_CHECKS = 1;1. 应用层校验(代码控制)
2. 触发器(Trigger)实现
3. 定期数据稽核脚本 ↓点击下方了解更多↓🔥《微信域名检测接口 、索引索引网络游戏交易平台哪样好外键约束的创建替代方案 当需要跨数据库或分库分表时,微信域名防封跳转、骤详提升网站流量排名、二
、