求各位大大怎么检查插入的数据与中断存储过程中的动作??

rekym 2013-09-05 08:30:27
公司有一软件,我想在它原的存储过程中做某个字段的检查,如果这个字段插入的值在某张表中,就通过否则就报错或中断或不执行,要怎么弄啊,在表列上做约束好像也不大行,不能动态

如果用instead of 触发器 (之前触发)之前检查,要怎么中断之后的存储过程运行啊,有什么语句可以直接退出后面的执行

如:A表(一个用户有多个银行卡)
UserID BankCard_No
01 10001
01 10002
02 10001

B表(明细表)
OrderID UserID BankCard_No
N001 01 10001
N002 02 10001
N003 01 10003

想在B表做限制或约束好像都不大行,如B表的第三条就不让插入,因为01,10003不在A表中
各位大大,该怎么搞啊,SQL2005的
...全文
239 5 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
KeepSayingNo 2013-09-06
  • 打赏
  • 举报
回复
用前触发器不行吗,在插入、更新、删除操作之前就判断是否满足需求,不满足就不执行
發糞塗牆 2013-09-06
  • 打赏
  • 举报
回复
把逻辑放入一个显式事务中,判断数据条件是否满足,不满足的话就记录消息并回滚
rekym 2013-09-06
  • 打赏
  • 举报
回复
引用 1 楼 hdhai9451 的回复:
你这样做,还不如直接用外键约束:

ALTER TABLE B ADD
CONSTRAINT [FK_B_BankCard_No] FOREIGN KEY 
(
 [BankCard_No]
) REFERENCES [A] ( [BankCard_No])
哪个字段不是主键,还有其它逻辑在里面,BankCard_No不定期会有add,update,del等动作
华夏小卒 2013-09-06
  • 打赏
  • 举报
回复
一次插入多条记录,就是 if exists(select 1 from b where BankCard_No not in (select BankCard_No from a)) break else ...
Andy__Huang 2013-09-05
  • 打赏
  • 举报
回复
你这样做,还不如直接用外键约束:

ALTER TABLE B ADD
CONSTRAINT [FK_B_BankCard_No] FOREIGN KEY 
(
 [BankCard_No]
) REFERENCES [A] ( [BankCard_No])

22,300

社区成员

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

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