【问题标题】:Create an auto incrementing primary key in DuckDB在 DuckDB 中创建一个自增主键
【发布时间】:2023-02-05 01:22:10
【问题描述】:

许多数据库引擎支持自动递增主键,我想在我的新 DuckDB 方法中使用这种方法,但我不知道如何设置它。例如,在 MySQL 中:

CREATE TABLE Persons (
    Personid int NOT NULL AUTO_INCREMENT,
    LastName varchar(255) NOT NULL,
    FirstName varchar(255),
    Age int,
    PRIMARY KEY (Personid)
); 

【问题讨论】:

  • 你试过谷歌了吗,看来你必须使用序列,因为没有自动递增... duckdb.org/docs/sql/statements/create_sequence
  • 是的,我看到了那个页面,但看不到如何准确地实现它来填充主键列。你有什么建议吗?
  • 是的:),创建一个表,然后创建序列。然后在插入时只需使用“插入表中的人(personid,...)值(nextval('name_of_your_sequence'),...)”
  • 如果这是你想要的,请查看我的答案

标签: sql duckdb


【解决方案1】:

创建一个表:

CREATE TABLE Persons (
    Personid integer primary key,
    LastName varchar(255) not null,
    FirstName varchar(255),
    Age integer
);

创建一个序列:

CREATE SEQUENCE seq_personid START 1;

插入一些数据:

INSERT INTO Persons VALUES (nextval('seq_personid'), 'Doe', 'John', 99);

【讨论】:

  • 您也可以使用默认值,例如Personid integer primary key default nextval('seq_personid'),更接近 PostgreSQL、MySQL 等的自动递增/串行行为。
  • 是的。更完整的答案:或者,试试这个:1. 创建一个序列:sql CREATE SEQUENCE seq_personid START 1; 2. 创建一个表:sql CREATE TABLE Persons ( Personid INTEGER PRIMARY KEY DEFAULT NEXTVAL('Publisher_Id_Seq'), LastName VARCHAR(255) NOT NULL, FirstName VARCHAR(255), Age INTEGER ); 3. 插入一些数据:sql INSERT INTO Persons VALUES ('Doe', 'John', 99);
猜你喜欢
  • 2018-12-31
  • 2023-04-01
  • 2011-04-14
  • 1970-01-01
  • 2021-09-16
  • 2012-04-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多