+ -
当前位置:首页 → 问答吧 → 求一存储过程的实现

求一存储过程的实现

时间:2011-11-10

来源:互联网

在删除数据中,对于级联表(父表与子表)中的上级表记录删除,要考虑子表中的记录内容是否存在,如果存在,则父表不允许删除。由于使用外键约束提示不是很友好,现要写以一存储过程,如果子表中的记录内容存在,则提示{"主表的列值"下存在"字表的列值"的记录,请先删除"字表的列值"},否则,直接删除。

作者: xingxiaobai   发布时间: 2011-11-10

这个应该是业务层所做的事情.

作者: qianjin036a   发布时间: 2011-11-10

估计他是想用SP来处理这个逻辑,然后只返回友好提示
这样可能改的时候程序或者网页就不用改了,直接改数据库里的SP就行。
LZ这个直接删除时判断下是否存在不就行了
SQL code
if exists(select 1 from 父表 where ...)
delete操作
else
'友好提示'

引用 1 楼 qianjin036a 的回复:

这个应该是业务层所做的事情.

作者: geniuswjt   发布时间: 2011-11-10

如果你在子表的外键设置上用了 
FOREIGN KEY REFERENCES referenced_table_name ( ref_column ) 
  ON DELETE NO ACTION 
则在删除父表记录而子表存在关联记录时,会自动发出提示,且父表的操作被回滚.

作者: qianjin036a   发布时间: 2011-11-10

在程序中要好实现得多。

作者: fredrickhu   发布时间: 2011-11-10

引用 2 楼 geniuswjt 的回复:

估计他是想用SP来处理这个逻辑,然后只返回友好提示
这样可能改的时候程序或者网页就不用改了,直接改数据库里的SP就行。
LZ这个直接删除时判断下是否存在不就行了
SQL code
if exists(select 1 from 父表 where ...)
delete操作
else
'友好提示'



表名要做参数传入,如何处理?

作者: xingxiaobai   发布时间: 2011-11-10

引用 4 楼 fredrickhu 的回复:

在程序中要好实现得多。

我只学过ADO,在程序中可以实现么?

作者: xingxiaobai   发布时间: 2011-11-10