有关主从表关系的问题

cmslovehxh 2005-04-30 03:19:30
有一个产品表Product
字段如下:ProductId,Name,......
另外一个定单明细表OrderD
字段如下:OrderDID,OrderBID,ProductId

表Product跟OrderD存在主从关系,如果删除了Product表的一条记录,根据数据库完整性约束OrderD也必须删除相同ProductId的记录,但是这样一来如果删除了产品,那么会使某些定单的产品记录发生了变化,怎么可以删除产品不违反数据库完整性约束前提下,保证历史定单数据的完整呢?
...全文
113 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
ckdjph 2005-06-09
  • 打赏
  • 举报
回复
up
cmslovehxh 2005-05-07
  • 打赏
  • 举报
回复
up
0bearblue 2005-04-30
  • 打赏
  • 举报
回复
在主表中加个isvalid的字段, 默认值是1,代表记录有效,删除的时候用update set isvalid = 0来替代delete,每次做select的时候加上where isvalid = 1
Navywang917 2005-04-30
  • 打赏
  • 举报
回复
这种东西最好不要删,如果实在要删建议检查定单明细表OrderD中是否存在该产品的信息,如果存在则不让删除,不存在可以删除!
tdtjjiao 2005-04-30
  • 打赏
  • 举报
回复
还有在算成本的时候也会用到的。

你可以这样设计
MaterialID ID
materialNO 物资编码
materialNumer 产品名称
materialname 产品编号

这是一个产品资料表,最好只有一个人能增加

如果客户要改产品名称名编号,那你可以改啊,
但物资编码不能改,改了以后可以UPdate就行了,但千万不能删除,
如果要删你要先检查,定单或报价单里是否有这个产品的资料才能删,明白?
tdtjjiao 2005-04-30
  • 打赏
  • 举报
回复
那你为什么要删除产品呢?
一个公司能有多少产品呢?
就算以后不生产这个产品也不要删,因为那个历史记录,
你的order, 生产,仓库,出货===都有这个产品的记录,你说能删吗?
以后要是查询的时候怎么办?

所以说物资编码不能删除,也不能改。
aliyan 2005-04-30
  • 打赏
  • 举报
回复
你删除的时不指定条件吗,什么时候的历史要保留,指定为条件不就行了、

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧