【问题标题】:Double primary key $cordovaSQLite双主键 $cordovaSQLite
【发布时间】:2017-06-05 15:55:58
【问题描述】:

如何使用 $cordovaSQLite 创建具有 2 个主键的表?

我的代码:

$cordovaSQLite.execute(db, 'CREATE TABLE IF NOT EXISTS mytable(id INTEGER PRIMARY KEY AUTOINCREMENT, num INTEGER PRIMARY KEY, text TEXT)');

有可能吗?

【问题讨论】:

标签: javascript angularjs cordova ngcordova


【解决方案1】:

设置两个主键是不可能的,但您可以对任何想要充当主键的字段设置唯一约束。您可以通过查看以下问题来模拟此字段的自动增量:SQLite auto-increment non-primary key field。希望这会有所帮助。

【讨论】:

  • 是的,我已经修改了我的代码:如果不存在 mytable (id INTEGER PRIMARY KEY AUTOINCREMENT, num INTEGER, UNIQUE (id, num)),则创建表。但是,如果表中没有 id 和 num,插入记录的正确查询是什么?
  • 如果 id 列是自动递增的,它的值将由 SQLite 引擎生成。假设它不是自动递增的(如 num 列),两列的正确值是:INSERT INTO mytable (id, num, text) VALUES ((SELECT IFNULL(MAX(id), 0)) + 1 FROM mytable), (SELECT IFNULL(MAX(num), 0)) + 1 FROM mytable), 'text here')。更多信息请参考here
  • 对于num 列(在这种情况下,id 列是自动递增的),查询是:INSERT INTO mytable (num, text) VALUES ((SELECT IFNULL(MAX(num), 0)) + 1 FROM mytable), 'text here')
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-15
  • 2021-08-31
  • 2013-01-20
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多