0

これが私のデータベースです。Reservation テーブルにデータを挿入するストアド プロシージャを作成したいと考えています。room_id、データ チェックイン、その他のフィールドを挿入したいのですが、guest_id の代わりに、Guest テーブルの名、姓、電話、その他のフィールドを挿入したいと考えています。これは可能ですか?

ここに画像の説明を入力

4

2 に答える 2

3

どのようなデータが投稿されても、必要な数のテーブルに挿入できます。コントローラーはテーブルとは関係がないため、制限はありません。

何かを書いてみることをお勧めします。それを機能させることができれば、何が機能していないかを説明するために、ここにその試みを投稿してください (スタック オーバーフロー...この特定の投稿ではありません)。それは、漠然とした非コード固有の質問ではなく、SO 形式により適しています。

于 2012-05-13T23:43:30.607 に答える
1

2 つのストアド プロシージャを作成します。1 つはゲスト情報を保存するためのもので、もう 1 つは予約情報を保存するためのものです。

CREATE PROCEDURE SaveGuest(@firstName varcahr(50),@lastName varchar(50),@phone varchar(15))
AS
 BEGIN

    INSERT INTO Guest(FirstName,LastName,Phone) VALUES (@firstName,@lastName,@phone);
    RETURN SCOPE_IDENTITY()

 END

Second Proc を呼び出す手順

CREATE PROCEDUE SaveReservation(@roomId int,@guestId int,@price decimal)
AS
 BEGIN
   INSERT INTO Reservation(Room_ID,Guest_ID,Price) VALUES (@roomID,@guestId,@price)
   RETURN SCOPE_IDENTITY()
 END

これはサンプルです。nullではないすべてのdb列のフィールドを追加する必要があります。

これらのデータを保存する 2 つのメソッドを作成します。SaveGuestSaveReservation。SaveGuest メソッドから、新しく保存されたゲスト ID を返します。アクション メソッドの呼び出しでは、最初に SaveGuest メソッドを呼び出します。メソッドの戻り値を確認してください。有効な番号であれば、ゲスト情報が保存されていることを意味します。そのゲスト ID を使用して、2 番目の部分 (予約) を保存します。このようなもの

public ActionResult SAve(YourViewMolde model)
{
int guestId=  SaveGuest("john","alex",....);
if(guestID>0)
 {
   SaveReservation(guestId,34,...);
 }
 else
 {
   model.AddModelError("","Error in saving Guest info!");
 }
}
于 2012-05-13T23:52:55.303 に答える