首页 > 解决方案 > 如果 MySQL INSERT 查询中不存在,则自动生成主键

问题描述

我在 MySql 中创建了一个表

CREATE TABLE newuser(id VARCHAR(10) PRIMARY KEY,sname VARCHAR(20));

当我插入记录时它工作正常

INSERT INTO newuser VALUE('abc123','monika');

但有时我不想在 INSERT 查询中提供 id,有时我想提供。如果我不提供 id MySql 会自动生成一个。

我该怎么做才能使以下查询都有效?

INSERT INTO newuser VALUE('abc123','monika');
INSERT INTO newuser VALUE('nikita');

标签: mysql

解决方案


“我什么都不懂”——那时很新。

首先第二个插入语句无效,请查看https://dev.mysql.com/doc/refman/8.0/en/insert.html - '如果您没有为 INSERT ... VALUES 或 INSERT 指定列名列表。 .. SELECT,表中每一列的值必须由 VALUES 列表、SELECT 语句或 TABLE 语句提供。

其次,uuid 是一个函数,其中“UUID 被设计为在空间和时间上全球唯一的数字”。https://dev.mysql.com/doc/refman/8.0/en/insert.html

您可以轻松地选择 uuid() 来查看它产生的结果。如果您想在插入中使用它,您将需要增加 id 大小

insert into users values (uuid(),<sname>);

推荐阅读