存储过程与外键冲突

W酱 2012-07-16 12:17:44
请帮忙看看以下这段语句,错误信息是:
INSERT 语句与 FOREIGN KEY 约束"FK_borrow_book"冲突。该冲突发生于数据库"Library",表"dbo.book", column '图书条码'。
但是如果把insert和update语句提出来单独运行,却没有发生外键冲突,表也被成功修改了。请问这是怎么回事呢?

CREATE PROC borrow_book
@Aid CHAR(11), @Rid CHAR(11), @Bid CHAR(4)
AS
BEGIN
INSERT dbo.borrow
( 图书条码 ,
读者ID ,
借书日期 ,
还书日期 ,
是否过期 ,
管理员ID
)
VALUES ( @Bid , -- 图书条码 - char(11)
@Rid , -- 读者ID - char(11)
GETDATE(), -- 借书日期 - date
DATEADD(MONTH, 2, GETDATE()), -- 还书日期 - date
'否' , -- 是否过期 - char(2)
@Aid -- 管理员ID - char(11)
)
UPDATE book
SET 图书状态 = '借出'
WHERE 图书条码 = @Bid
END
...全文
102 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
W酱 2012-07-16
  • 打赏
  • 举报
回复
啊……我太粗心了,谢谢!
quchen520 2012-07-16
  • 打赏
  • 举报
回复
...
@Bid CHAR(4)
...
VALUES ( @Bid , -- 图书条码 - char(11)
...
你参数里面的char长度是4,而图书条码 - char(11)的长度是11,应该就是错在这里了。
估计它把你传的参数进行截取了。。。。。
W酱 2012-07-16
  • 打赏
  • 举报
回复
我插入的图书条码是从BOOK表里复制过来的
quchen520 2012-07-16
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

说明你插入的那个图书条码不在BOOK表
[/Quote]+1

你分开执行和SP执行用的数据是相同的吗?
SQL77 2012-07-16
  • 打赏
  • 举报
回复
说明你插入的那个图书条码不在BOOK表

34,590

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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