SQL多表修改,联动修改问题

qq_28630685 2015-08-15 12:00:59
表一
create table yaopinyp --药品饮片
(
ypid int identity(1,1) primary key,
ypname varchar(100),--药品名称
ypmoney DECIMAL(10,2),--药品单计
ypjjmoney DECIMAL(10,2),--药品进价
ypscmoney DECIMAL(10,2),--药品市场价格
ypsm text,--药品说明
yplx varchar(10),--克/千克/斤/公斤
ypfl int foreign key (ypfl) references YinPian(ypid), --分类一根据YinPian表
scid int,--企业
ypkc int default 0,--库存
times datetime default getdate(),
)

表二
create table YinPian		--饮片分类表
(
ypid int primary key identity(1,1), --饮片Id
ypname varchar(50), --饮片名称
ypsjid int , --上级id,0为一级id,二级的id为一级的id
)

两个表是相互关联的,修改表一中的分类字段,表二中的字段也跟着修改。由于表一种没有ON DELETE CASCADE,求没有ON DELETE CASCADE的联动修改语句怎么写?


如果在表一字段中加上ON DELETE CASCADE,这个联动修改语句怎么写?
...全文
480 3 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
LongRui888 2015-08-17
  • 打赏
  • 举报
回复
如果你想把表1中的类别1,修改为类别2,那么首先的在表2中有类别2,如果没有,要先插入一条类别2的数据,然后 表1引用这个类别1的数据,否则就直接报外键冲突错误。 如果,类别2已存在,那么直接把表1的ypfl 修改成类别2的id值就可以了
LongRui888 2015-08-17
  • 打赏
  • 举报
回复
从引用关系上,应该是表1 引用了表2的 分类,那么应该在表2上的 ypid上加上on delete cascade,也就是在删除主表的时候 , 删除子表的 药品饮片中的相应记录。 为什么是这样呢? 因为 你删除了表1中的 一条记录,比如引用了表2的 类别1,但是其他表1的记录也会引用这个类别1,那么 这个时候是无法实现级联删除的,只有反过来,当你要删除1个类别的时候,那么把所有引用这个类别的数据都删除。 这个不一定就符合你的需求。
mastersky 2015-08-17
  • 打赏
  • 举报
回复
一条语句修改一个表,然后用事务。

22,300

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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