以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  数据参照完整性如何实现?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=43015)

--  作者:zpx_2012
--  发布时间:2013/11/28 10:37:00
--  数据参照完整性如何实现?
系统中有一个{产品编码}表,订单明细,出入库明细,采购明细等都是从中提取产品编码的相关数据自动填充,现在想实现当修改产品编码中的产品编码时所有引用表中的产品编码自动更新,如果删除产品编码时该编码被任何一张单据引用便禁止删除并提示。
本想在sql数据库关系图中设置一对多的关系,但因为全部主键都是用的[_Identify]用它连接无意义。不知道这种情况下(主键是_Identify)怎么才能用产品编码建立多个表之间的一对多关系?

图片点击可在新窗口打开查看此主题相关图片如下:20131128-1.jpg
图片点击可在新窗口打开查看

如果不用sql关系图,在ft中如何实现这种功能(不会是要在删除或更新产品编码时遍历后台所有表去逐个查找吧?这样速度肯定是个大问题)

谢谢!


--  作者:Bin
--  发布时间:2013/11/28 10:41:00
--  
用产品编码设为关联列不就OK了.  有什么问题? 又不是非要主键才可以关联.

删除也不存在循环啊

--  作者:zpx_2012
--  发布时间:2013/11/28 10:53:00
--  

谢谢,我还以为是必须要主键才能设置一对多关系,但却出现下面的提示,也没有在数据库设置过约束啊


图片点击可在新窗口打开查看此主题相关图片如下:20131128-2.jpg
图片点击可在新窗口打开查看


--  作者:Bin
--  发布时间:2013/11/28 10:54:00
--  
图片点击可在新窗口打开查看我说的是狐表关联
--  作者:zpx_2012
--  发布时间:2013/11/28 11:01:00
--  
那样不行啊,因为全部表操作时都是动态加载的窗口表,本身没有关联,第二即使是建立了关联,操作产品编码表时可能其他表都没有加载进来。
--  作者:Bin
--  发布时间:2013/11/28 11:05:00
--  
1.不要使用系统自身的 _Identify 列作为主键, 这个是可以自由设置主键的

2.不要关联其实也可以,完全可以通过代码SQL语句实现关联的作用,同步删除,更改等...

--  作者:zpx_2012
--  发布时间:2013/11/28 11:43:00
--  
我就是通过sql语句来实现关联的,对于主子表这样的更改,删除当然速度没问题,现在主要是对于很多引用表的更新删除比如我说的产品编码表可能和所有表都相关,那删除一个编码是用sql语句去查询所有相关表速度不是慢死了。所以才想用sql数据库关系图来实现,那毕竟是数据库具备的功能,速度应该不会有影响吧;
如果我改用其他非-Identify的字段做为主键,请问原来的_Identify怎样才能保持现有的自动增长不重复的功能,因为这个很方便实用。

--  作者:Bin
--  发布时间:2013/11/28 11:47:00
--  
只能有一个自增主键,设了其他 就没有 Identify了