Informix 到 SQL 属性约束
Informix to SQL attribute constraint
我的脚本中有如下约束,我了解到它是 Informix:
create table blaBla
{
var_name_1 not null constraint n255_153,
var_name_1 not null constraint n655_699,
}
我在 SQL 中找不到与此等效的内容。我试过只输入相同的内容,但没有用。其他 DBMS 中的等效项是什么?
您的 SQL 有很多问题:
create table blaBla
{
var_name_1 not null constraint n255_153,
var_name_1 not null constraint n655_699,
}
Informix 使用 {
和 }
来包含注释(还有 --
到行尾,以及 /* … */
)。标准 SQL 和 Informix 都需要 (
和 )
围绕 CREATE TABLE 语句的主体。
所有SQL DBMS 坚持列定义中的类型,并要求同一table 中的不同列具有不同的名称。 (table 中的约束名称在数据库中的所有 table 中也必须是唯一的。)逗号是分隔符,而不是终止符,因此最后的逗号也必须省略。
Informix 也坚持约束名称在约束之后,但标准和其他 SQL DBMS 将约束名称放在约束之前。因此,在其他地方,您会考虑使用:
CREATE TABLE blaBla
(
var_name_1 INTEGER CONSTRAINT n255_153 NOT NULL,
var_name_2 CHAR(20) CONSTRAINT n655_699 NOT NULL
)
不过,坦率地说,大多数人根本不会命名 NOT NULL 约束,而只会写:
CREATE TABLE blaBla
(
var_name_1 INTEGER NOT NULL,
var_name_2 CHAR(20) NOT NULL
)
然后系统会自动生成一个与您显示的类似的约束名称。 nXXX_YYY
符号表示 table ID(systables
系统目录 table 中的 tabid
编号)在创建约束时为 XXX,并且对于 table,约束条件为编号 YYY。要么你有来自几个 table 的复合符号,要么 table 被修改(改变)并且新的 table 数字是 655 而旧的是 255。然而,这是一个怪癖Informix 使用的命名方案,并且完全不受标准 SQL.
的约束
我的脚本中有如下约束,我了解到它是 Informix:
create table blaBla
{
var_name_1 not null constraint n255_153,
var_name_1 not null constraint n655_699,
}
我在 SQL 中找不到与此等效的内容。我试过只输入相同的内容,但没有用。其他 DBMS 中的等效项是什么?
您的 SQL 有很多问题:
create table blaBla
{
var_name_1 not null constraint n255_153,
var_name_1 not null constraint n655_699,
}
Informix 使用 {
和 }
来包含注释(还有 --
到行尾,以及 /* … */
)。标准 SQL 和 Informix 都需要 (
和 )
围绕 CREATE TABLE 语句的主体。
所有SQL DBMS 坚持列定义中的类型,并要求同一table 中的不同列具有不同的名称。 (table 中的约束名称在数据库中的所有 table 中也必须是唯一的。)逗号是分隔符,而不是终止符,因此最后的逗号也必须省略。
Informix 也坚持约束名称在约束之后,但标准和其他 SQL DBMS 将约束名称放在约束之前。因此,在其他地方,您会考虑使用:
CREATE TABLE blaBla
(
var_name_1 INTEGER CONSTRAINT n255_153 NOT NULL,
var_name_2 CHAR(20) CONSTRAINT n655_699 NOT NULL
)
不过,坦率地说,大多数人根本不会命名 NOT NULL 约束,而只会写:
CREATE TABLE blaBla
(
var_name_1 INTEGER NOT NULL,
var_name_2 CHAR(20) NOT NULL
)
然后系统会自动生成一个与您显示的类似的约束名称。 nXXX_YYY
符号表示 table ID(systables
系统目录 table 中的 tabid
编号)在创建约束时为 XXX,并且对于 table,约束条件为编号 YYY。要么你有来自几个 table 的复合符号,要么 table 被修改(改变)并且新的 table 数字是 655 而旧的是 255。然而,这是一个怪癖Informix 使用的命名方案,并且完全不受标准 SQL.