讲师中心 微信公众号
AI工具推荐 视频效率加速

主键自增与外键引用,开发中这样搭配最稳

胖浩姑娘_7633

胖浩姑娘_7633

发布时间:2026-08-16 08:03:22

|

948人浏览过

|

来源于php中文网

原创

必须先获取父表自增主键再插入子表,MySQL用LAST_INSERT_ID()(同会话连续执行),SQL Server用SCOPE_IDENTITY()(作用域安全),PostgreSQL用RETURNING子句(一步返回),且外键类型须严格匹配主键类型。

主键自增与外键引用,开发中这样搭配最稳

在开发中插入父子表数据时,必须先拿到父表自增主键值才能写入子表外键字段,否则会因外键约束报错或数据不一致。

MySQL中用LAST_INSERT_ID()获取刚生成的主键

这一步操作起来很简单,直接在同一个事务里执行插入后调用函数即可。

第一步:开启事务 → 执行父表INSERT → 立即调用LAST_INSERT_ID()获取ID值。

第二步:将该ID赋值给子表外键字段,再执行子表INSERT。

注意:LAST_INSERT_ID()是会话级的,【必须在同一次数据库连接中连续执行】,跨连接或中间夹了其他INSERT会导致取值错误。

SQL Server中用SCOPE_IDENTITY()安全取值

它比IDENTITY()和@@IDENTITY更可靠,只返回当前作用域(比如当前存储过程或批处理)内最后生成的标识值。

方法一:在T-SQL批处理中使用

BEGIN TRANSACTION;
INSERT INTO Orders (OrderDate, CustomerID) VALUES (GETDATE(), 1001);
DECLARE @NewOrderID INT = SCOPE_IDENTITY();
INSERT INTO OrderItems (OrderID, ProductID, Quantity) VALUES (@NewOrderID, 205, 3);
COMMIT;

方法二:在存储过程中封装逻辑

CREATE PROC InsertOrderWithItems
@CustomerID INT,
@ProductID INT,
@Quantity INT
AS
BEGIN
INSERT INTO Orders (OrderDate, CustomerID) VALUES (GETDATE(), @CustomerID);
INSERT INTO OrderItems (OrderID, ProductID, Quantity)
VALUES (SCOPE_IDENTITY(), @ProductID, @Quantity);
END

PostgreSQL中用RETURNING子句一步到位

这是最简洁的方式,INSERT语句直接返回指定列,无需额外查询。

执行父表插入时加上RETURNING id:

INSERT INTO projects (name, status) VALUES ('新项目', 'active') RETURNING id;

数据库立刻返回刚插入行的id值,应用层可直接捕获并用于后续子表插入。

若需批量插入并获取多个ID,RETURNING也支持,但【不能与ON CONFLICT DO NOTHING合用】,否则可能返回空结果集。

外键字段类型必须严格匹配主键类型

MySQL中父表主键是BIGINT AUTO_INCREMENT,子表外键就必须声明为BIGINT UNSIGNED(如果主键无符号)。

SQL Server中父表用INT IDENTITY,子表外键就不能用SMALLINT,否则ALTER TABLE添加外键时会报错“数据类型不匹配”。

PostgreSQL中SERIAL主键本质是INTEGER,对应外键必须也是INTEGER,哪怕你用int4别名也不行——类型名必须完全一致。

热门AI工具

更多
DeepSeek

DeepSeek是一款面向对话、写作、编程和推理场景的AI大模型工具。

WorkBuddy

一款AI办公效率工具,主要用于腾讯云推出的AI原生桌面智能体工作台,适合需要提升相关任务效率的用户。

立刻MV
立刻MV Hot

立刻MV是一款AI文本写作工具,AI 音乐视频(MV)创作工具。

PixTV
PixTV Hot

PixTV是一款面向AIGC内容创作的AI视频生成工具。

AionClaw
AionClaw Hot

AionClaw是一款面向办公、创作和编程任务的AI桌面智能体。

切问学术

切问学术是一款AI论文写作工具,复旦大学NLP团队推出的AI学术智能体。

豆包大模型

豆包大模型是一款由字节跳动推出的企业级大语言模型服务平台。

火山引擎

火山引擎是一款面向企业的云计算与AI服务平台。

咔片AIPPT

一款在线AI演示文稿制作工具,可根据主题和内容需求辅助生成PPT结构与页面,提高演示材料制作效率。

相关专题

更多
剧云AI短剧创作教程合集
剧云AI短剧创作教程合集

本专题聚焦剧云AI短剧创作,讲解从短剧灵感、梗概、全局大纲到分集、分场和正文的完整流程及节奏设计方法。

0

2026.10.14

剧云AI剧本创作零基础入门
剧云AI剧本创作零基础入门

本专题系统讲解剧云AI剧本创作流程,涵盖灵感、梗概、大纲、分场与正文生成,帮助新手快速完成首个中文剧本项目。

0

2026.10.14

VibeKnow文档转视频操作指南
VibeKnow文档转视频操作指南

本专题讲解VibeKnow上传Word、TXT、Markdown等材料生成视频的方法,覆盖内容解析、脚本组织、画面生成与成片检查。

0

2026.10.14

VibeKnow知识视频制作与导出详解
VibeKnow知识视频制作与导出详解

本专题整理VibeKnow从注册、素材上传、AI生成到预览导出的完整操作,帮助新手快速制作第一条知识讲解视频。

0

2026.10.14

二狗PPT大纲编辑实操指南
二狗PPT大纲编辑实操指南

本专题聚焦二狗PPT结构化大纲的生成和修改,讲解标题、正文、目录、页数与页面顺序的调整方法,提升汇报逻辑和内容完整性。

0

2026.10.14

二狗PPT文档转PPT全教程
二狗PPT文档转PPT全教程

本专题讲解二狗PPT解析Word、PDF、Excel和PPT资料的方法,涵盖文件上传、内容提取、大纲整理、异常处理与转换后校对。

0

2026.10.14

讯飞绘文全功能使用教程
讯飞绘文全功能使用教程

本专题系统整理讯飞绘文官网入口、注册登录、工作台及内容创作流程,帮助用户熟悉常用功能,快速完成首篇图文内容。

0

2026.10.14

讯飞绘文AI写作与文案生成合集
讯飞绘文AI写作与文案生成合集

本专题聚焦讯飞绘文AI写作、提纲生成、文章改写和文案润色,覆盖从主题输入到成稿优化的关键操作与实用技巧。

20

2026.10.14

PixTV官网入口地址合集
PixTV官网入口地址合集

本专题汇总了 PixTV AI 一站式视频创作平台的官方入口与使用教程。无需下载软件,浏览器直接访问即可使用。平台将剧本、图像、视频、声音与剪辑整合在“无限画布”中,接入 GPT Image 2.5、Seedance 2.5 等头部模型。本专题整理了从新建画布、角色锚定、分镜拆分到视频生成与导出的完整操作指南,助你快速上手 AI 短剧与漫剧创作。

100

2026.10.10

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
相关推荐
/
热门推荐
/
最新课程
进程与SOCKET
进程与SOCKET

共6课时 | 0.5万人学习

PHP零基础通关宝典
PHP零基础通关宝典

共78课时 | 13.1万人学习

关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2026 https://www.php.cn/ All Rights Reserved | php.cn