结论:可以,但有前提条件,且不同数据库行为不同。
下面按常见数据库说明:
可以手动插入。
INSERT INTO user(id, name) VALUES (100, 'Tom');
MAX(id)+1 或 AUTO_INCREMENT 值开始SHOW TABLE STATUS;
ALTER TABLE user AUTO_INCREMENT = 200;
✅ 允许手动插入,但需谨慎
默认不允许手动插入。
INSERT INTO user(id, name) VALUES (100, 'Tom'); -- 报错
必须显式开启:
SET IDENTITY_INSERT user ON;
INSERT INTO user(id, name) VALUES (100, 'Tom');
SET IDENTITY_INSERT user OFF;
⚠️ 同一会话中只能对一个表开启
可以手动插入。
INSERT INTO user(id, name) VALUES (100, 'Tom');
SELECT setval('user_id_seq', (SELECT MAX(id) FROM user));
❌ 生产环境频繁手动插入自增 ID
❌ 分布式系统中手动指定 ID
❌ 不清楚当前最大值就插入
✅ 更适合:
自增字段“通常可以手动插入”,但数据库不同规则不同,插完要注意自增/序列是否同步。
如果你说的是某个具体数据库(MySQL / Oracle / SQL Server 等),我可以给你更精确的示例。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。