以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  _Identify的疑问  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=62335)

--  作者:HappyFt
--  发布时间:2014/12/30 9:49:00
--  _Identify的疑问

每个表中都有一个[_identify]列作为自动增长,可以很方便的唯一识别每一行,其他表单跨表更新时也可以引用它,但有个很大的问题就是数据库移动复制到其他项目或地方使用时,新的数据库中的_identify列就变了,其他表中有引用过这个_identify的值的就完全对应不了。

有没有办法在每个表的后台SQL数据保存的时候即生成_identiy的时候自动将这个值赋予每个表中的行号列?

谢谢!


--  作者:Bin
--  发布时间:2014/12/30 9:55:00
--  
可以
1.数据库编写触发器,生成_Identify后就为行号列赋值
2.自己编写保存代码  
datatables(X).datarows(1).save  \'代码执行保存行,保存后会生成_Identify 此时后面接上赋值代码
datatables(X).datarows(1)("行号")=datatables(X).datarows(1)("_IDentify")


--  作者:HappyFt
--  发布时间:2014/12/30 20:46:00
--  

谢谢,第2种方式后面接上赋值代码是不是又要再次执行datatables(X).datarows(1).save  保存才可以啊,感觉还是第一种好,但是有个问题,触发器都是针对表触发的,每个表都要在sql的后台数据库中去写,有没有写一个触发器通用于指定数据库中的所有表的啊,或者通用于一批指定的表的?


--  作者:有点甜
--  发布时间:2014/12/30 21:02:00
--  

 第二种方法简单方便,原理和触发器一样,没必要写触发器。

 

 在DataRowAdded的时候save一下即可。


--  作者:HappyFt
--  发布时间:2014/12/30 21:35:00
--  

好的,那请教一下foxtable的这种保存机制,如果save的那一瞬间出现断网或其他异常情况导致save这个动作没有成功将数据保存到后台数据库表中,结果会怎么样?或者会返回什么信息


--  作者:有点甜
--  发布时间:2014/12/30 21:39:00
--  
 save 断网的话,就直接报错了。
--  作者:有点甜
--  发布时间:2014/12/30 21:41:00
--  

 报:一般网络错误,

 

 你可以在 BeforeShowErrorMessage 事件处理

 

http://www.foxtable.com/help/topics/2655.htm