0

我创建了两个表:Account 和 Loan

  • 在 Account 表中,我将Acc_id其作为主键。
  • 在 Loan 表中,我Loan_id作为主键和Acc_id外键引用Acc_idAccount 表中的 。

现在我在 Account 表中插入了 5 条记录..

101 YEARLY                  BEN                             21.12.2012
102 YEARLY                  PARKER                          31.07.2013
103 HALFYEARLY              MARY                            26.04.2013
104 TWOYEARS                OSBORN                          01.01.2014
105 TWOYEARS                HARRY                           04.06.2015
106 YEARLY                  PENNY                           25.12.2013

现在我必须在贷款表中插入值。

例如:insert into loan values((203,'PARKER','500$',103(Ac_id),'25.11.2014');

现在在上面的查询中,我给了 Ben 的Acc_no错误。我已经输入了acc_noMary 的,但是会插入成功。

我需要一个程序来防止这种情况发生,谁能告诉我这是否可能?

4

1 回答 1

0

您的问题出在数据设计中-您的贷款表中不应包含帐户持有人的姓名-这是多余的。

如果要检查,可以创建一个过程,例如,

create proc insertLoan
(    
    @accid int, 
    @accholder varchar(50), 
    @amount money    
)
as
begin
    if (exists (select * from accounts where id =@accid and accountname = @accholder))
    begin
        insert loans (accid, amount) values (@accid, @amount)
    end
    else
    begin
        raiserror ('mismatched account details',15,1)
    end
end
于 2012-10-17T10:42:25.937 回答