其实autoinc字段很有价值,它提供了一个没有意义的唯一id,在很多场合都需要.
(注意,通常的物料代码,身份证号,卡号等等现实属性都有意义,可能需要修改,不能用来做主键!最好采用无意义主键) 【程序编程相关:一个简单的,适应多种数据库之间存取操作的】 【推荐阅读:如何判断一个机器的MSSQL是否启动 】 【扩展信息:双对象列表,双字符串列表 】 但是delphi用ado(dbexpress我没有试过)连接关系数据库,在insert/apend post后,autoinc字段的值总为0(连access可以获得新值),这样在界面上不好看,而且不能刷新数据集,会出错,因为它与数据库不一致. 特别是需要主从关系的情况下,这样无法插入子表记录.若你真要这样,可以看john kaster 的一篇文章:how to use autoinc fields with datasnap 而且ms sql的autoinc字段有两种选择:复制的时候自增,复制的时候不自增. 我希望delphi有个开关,可以让开发者选择在post后立即用select @@identity 来填充新值. 但目前还不行,所以只有不用数据库提供的autoinc字段,自己写了. 一般一个数据库中会有多个autoinc id字段. 建一个表autoincid 两个字段: idname varchar(16) -- 主键,存放其他各表autoinc id字段的字段名 idvalue int -- 当前id 值, 初始化为0 获取当前的某个autoinc字段的 id值 ... 下一页