首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复合主键(Sqlite.Swift)

复合主键(Sqlite.Swift)
EN

Stack Overflow用户
提问于 2017-11-29 12:59:06
回答 1查看 1K关注 0票数 0

如何使用此库创建具有复合主键的表。例如:

代码语言:javascript
复制
CREATE TABLE something (
  column1, 
  column2, 
  column3, 
  PRIMARY KEY (column1, column2)
);

我在文档中看到的唯一示例是单列上的主键:

代码语言:javascript
复制
try db.run(users.create { t in     
    t.column(id, primaryKey: true)
    t.column(email, unique: true)  
    t.column(name)                 
}) 

我尝试了以下操作,但出错了(...table "“有多个主键):

代码语言:javascript
复制
 try db.run(tblTsMosStaged.create { t in
                        t.column(colTsMosStagedEventId, primaryKey: true)
                        t.column(colTsMosStagedEventInstance, primaryKey: true)
                        t.column(colTsMosStagedTaxId, primaryKey: true)
                        t.column(colTsMosStagedRankId)
...

还是只有通过执行任意SQL才有可能

EN

回答 1

Stack Overflow用户

发布于 2017-11-29 16:08:40

SQLite.swift文档说:

表约束 可以使用以下函数在单个列的作用域之外提供其他约束。

  • primaryKey向表中添加PRIMARY KEY约束。与上面的列约束不同,它支持所有SQLite类型、升序和降序以及复合(多列)键。 t.primaryKey(email.asc,name) //主键(电子邮件“ASC,"name")
代码语言:javascript
复制
 try db.run(tblTsMosStaged.create { t in
                        t.column(colTsMosStagedEventId)
                        t.column(colTsMosStagedEventInstance)
                        t.column(colTsMosStagedTaxId)
                        t.column(colTsMosStagedRankId)
//ADD this line
                        t.primaryKey(colTsMosStagedEventId, colTsMosStagedEventInstance, colTsMosStagedTaxId)
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47553472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档