在数据库中,参照完整性违约处理中有拒绝处理、级联修改、设为空值三种方法,那设置空值是如何定义的

在数据库中,参照完整性违约处理中有拒绝处理、级联修改、设为空值三种方法,那设置空值是如何定义的,第1张

在数据库中,参照完整性违约处理中有拒绝处理、级联修改、设为空值三种方法,那设置空值是如何定义的:

这个是要自己定义的,自己写很麻烦,

下面是我用SQL SERVER逆向生成的代码,你可以看一下

USE [stu]

GO

/ 对象:  Table [dbo][student]    脚本日期: 03/10/2011 14:52:53 /

SET ANSI_NULLS ON

GO

SET QUOTED_IDENTIFIER ON

GO

CREATE TABLE [dbo][student](

[id] [int] NOT NULL,

[did] [int] NULL,

CONSTRAINT [PK_student] PRIMARY KEY CLUSTERED

(

[id] ASC

)WITH (PAD_INDEX  = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]

) ON [PRIMARY]

GO

ALTER TABLE [dbo][student]  WITH CHECK ADD  CONSTRAINT [FK_student_dd] FOREIGN KEY([did])

REFERENCES [dbo][dd] ([Did])

ON UPDATE SET NULL

ON DELETE SET NULL

GO

ALTER TABLE [dbo][student] CHECK CONSTRAINT [FK_student_dd]

按照你现在这两个表的设计来看,最简单的改法就是,把SmallClassID表中的BigClassName和EnBigClassName这两个字段去掉,换成BigClassID这个字段,存放它上级目录的ID,设置成外键字段,指向BigClass表中的主键。

然后你在代码里面生成目录的时候,先生成一级目录,例如:

Select from BigClass

这样就可以把一级节点都生成,然后再对每个一级节点生成其下级节点,比个给产品分类这个节点生成下级节点,可以用:

Select from SmallClass where BigClassID = 46(即取当前节点对应的ID)

这样就可以查到它的子节点了。

这个是对你改动最小的,但是最好的实现方法是只用一张表去实现,设置一个ParentID的字段,存储其父节点的ID,也就是一个指向自己这张表的外键,然后用递归算法去生成目录,这样就比较灵活,不管有几级的目录都可以。

两种方法:

1把两个表需要关联的字段,设置主外键关联,然后设置它们级联更新和删除就行了

2呢,就是给一个表建立触发器,当插入或更新的时候,自动更新另一个表。

试试吧!

以上就是关于在数据库中,参照完整性违约处理中有拒绝处理、级联修改、设为空值三种方法,那设置空值是如何定义的全部的内容,包括:在数据库中,参照完整性违约处理中有拒绝处理、级联修改、设为空值三种方法,那设置空值是如何定义的、数据库级联二级目录怎么实现、SQL中如何设置级联更新等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9615172.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-30
下一篇2023-04-30

发表评论

登录后才能评论

评论列表(0条)

    保存