【问题标题】:Is it possible to autoincrement a column which is not primary key是否可以自动增加不是主键的列
【发布时间】:2013-11-05 11:28:53
【问题描述】:

我有两列 Indexpath。由于我的代码的当前逻辑,我希望路径为primary 键,索引为auto Increment。这可能吗?

【问题讨论】:

  • 可能的。你是如何连接到数据库的?查看休眠stackoverflow.com/questions/16350938/…
  • @MadhavC 没有答案
  • @MadhavC 我想要在 android 上下文中
  • 你想通过制作pathprimary key来完成什么?很可能有更好的方法来做到这一点,而无需“更改完整的逻辑”。

标签: android database primary-key android-sqlite auto-increment


【解决方案1】:

如果我猜对了,您最终希望path 自动递增, 我已经在新值上使用触发器来做到这一点,在你的表创建过程中运行这两个命令

        String sqlTableCreation = String.format("create table %s (%s INTEGER primary key, " +
            "%s integer DEFAULT 0)",
            Contract.TABLE,
            Contract.INDEX,
            Contract.PATH
            );

    String sqlPathAutoIncrement = 
            String.format("CREATE TRIGGER pk AFTER INSERT ON %1$s" +
                    " BEGIN" +
                    "     UPDATE  %1$s" +
                    "     SET     %2$s = 1+ (SELECT MAX(%2$s) FROM %1$s) " + 
                    "     WHERE   ROWID = new.ROWID;" + 
                    " END;" , 
                    Contract.TABLE,
                    Contract.PATH,
                    Contract.INDEX);

【讨论】:

    【解决方案2】:

    GUID 值在表甚至数据库中是唯一的,因此,创建 auto_increment 列的主索引并为 GUID 创建一个唯一索引。我想这就是你需要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-04
      • 1970-01-01
      • 2018-06-05
      • 2014-02-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多