0

Account と Loan の 2 つのテーブルを作成しました。

  • Account テーブルではAcc_id、主キーとして持っています。
  • Loan テーブルではLoan_id、主キーとして、Account テーブルをAcc_id参照する外部キーとして持っています。Acc_id

これで、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's をAcc_no間違って指定しました。メアリーのチンポに入りましたacc_noが、無事挿入されます。

これが起こらないようにする手順が必要です。これが可能かどうか誰か教えてもらえますか?

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 に答える