mysql - 如果 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');
解决方案
“我什么都不懂”——那时很新。
首先第二个插入语句无效,请查看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>);
推荐阅读
- magento2 - Magento 2 Rest Api 作为 JSON
- angular - 导出返回函数的函数
- javascript - 转到 Typescript 源定义而不是 Visual Studio Code 中的编译定义
- regex - 如何使用“AND”和“OR”运算符搜索字符串中的单词列表?
- python - sklearn 内部访问 cython 类和函数
- python - Django REST Framework - 断言错误:类 PropertySerializer 缺少“Meta.model”属性
- angular - 打字稿:未定义标识符“X”。'Y' 不包含这样的成员
- symfony - Symfony 4.2 VichUploaderBundle:文件未保存
- applescript - 通过 Automator 中的 Applescript 在排序列表中选择文件
- python - 无法使用 scipy peak_widths 方法将数组数据从 dtype('0') 转换为 dtype('int32')