Informix for ORM框架中的串行字段

时间:2013-03-14 16:13:32

标签: sql informix

我们使用非常旧版本的Informix(SE)。我试图在C#中创建一个ORM类型的框架来处理CRUD程序。我正在努力想出一种处理包含SERIAL字段的表的方法。

基本上我想以某种方式创建一个唯一的值,当我插入一条记录或者至少得到我刚插入的记录的值时,我可以合理地确定它仍然是唯一的。如果许多用户同时使用该表(这是一个数据库范围的方案),这必须有效。

我知道较新版本的'序列'对象可以设置但SE不能。

1 个答案:

答案 0 :(得分:2)

仅供参考: Informix ODBC驱动程序和.NET驱动程序不正式支持SE ;它可能仍然有效。 我对SE的了解也很有限;我在下面列出的信息可能与ID相关,而不是SE。

您正在尝试的驱动程序是用于ODBC的.NET Framework数据提供程序;它与Informix串行数据类型不兼容。 Informix原生.NET提供程序支持IDS中的串行,但此驱动程序从未针对SE进行过测试。如果你愿意承担风险,那么获得成功的机会可能会更高。

我认为你不必使用任何复杂的算法来使服务器上的串行值唯一。 以下示例将更好地解释它。

    CREATE TABLE tab ( c1 SERIAL );
    INSERT INTO tab VALUES ( 0 ); 
    INSERT INTO tab VALUES ( 4 );  
    INSERT INTO tab VALUES ( 0 ); 
    INSERT INTO tab VALUES ( 3 ); 
    INSERT INTO tab VALUES ( 3 );
    INSERT INTO tab VALUES ( 0 ); 
    SELECT * FROM tab;

     1
     4
     5
     3
     3
     6


DROP TABLE tab;
CREATE TABLE tab ( c1 INT, c2 SERIAL PRIMARY KEY );
INSERT INTO tab VALUES ( 11, 0 );
INSERT INTO tab VALUES ( 12, 0 );
INSERT INTO tab VALUES ( 13, 0 );
INSERT INTO tab VALUES ( 14, 0 );
INSERT INTO tab VALUES ( 15, 0 );
SELECT * FROM TAB;

c1          c2

11           1
12           2
13           3
14           4
15           5

如果您正在尝试在客户端生成的序列类型值,例如添加到DataTable等的条目,那么 DataColumn 上的以下属性可能会有用: 的自动递增下, 的 AutoIncrementStep 下, 的 AutoIncrementSeed