在informix中创建autoserial列

时间:2015-06-02 20:06:59

标签: sql informix

是否可以在Informix中按顺序1,2,3,4 ...创建自动索引,以及语法是什么。我有一个查询,我的一些时间戳是相同的,所以我无法使用时间戳变量进行查询。谢谢!

3 个答案:

答案 0 :(得分:1)

那将是SERIAL data type

答案 1 :(得分:1)

您可以使用@RET提及 SERIAL 数据类型。

接下来,您将无法在现有表格中添加 SERIAL 列。解决方法:

  • 添加 INTEGER 列,填充序号,然后将列更改为 SERIAL
  • 将数据卸载到文件中,删除表并使用新列重新创建它。
  • 使用新列创建一个新表,使用旧数据填充新表,删除旧表并重命名新表。 ...

请记住,它们可能不是唯一的。因此,您必须在列中创建唯一索引主键唯一约束,以防止重复。

您应该注意的另一个注意事项: - 主键不允许 NULLS 唯一索引唯一约束允许(只要有只有一个记录),所以你应该在列定义上指定 NOT NULL 。 - 如果您使用主键唯一约束,则可以为其创建外键。 - 在主键唯一约束中,记录的唯一性验证在 DML 的末尾完成,对于唯一索引它是连续排的。

似乎您第一次接触 informix ,欢迎。是的,一开始就有点难以记住:

  • 在询问之前始终搜索,真正搜索。
  • 当有疑问或达到死胡同时,请求离开。
  • 尝试减少您的案例场景,尽可能简单地构建您自己的案例,这些不仅有助于我们帮助我们,而且您将练习并在某些情况下自己找到解决方案。
  • 如果涉及错误,请始终提供错误代码,在 informix 中,至少会出现一个错误代码,有时也会出现 ISAM 错误。

热切地问候。

答案 2 :(得分:1)

这些是我运行的将id字段添加到现有表中的命令。登录到dbaccess控制台。

alter table my_table add id integer before some_field;

create sequence myseq;
update my_table set id = myseq.nextval;
drop sequence myseq;

alter table my_table modify (id serial not null);

感谢@ ricardo-henriques为我指明了正确的方向。这些命令将允许您在数据库上运行他的答案中解释的说明。