これが私のデータベースです。Reservation テーブルにデータを挿入するストアド プロシージャを作成したいと考えています。room_id、データ チェックイン、その他のフィールドを挿入したいのですが、guest_id の代わりに、Guest テーブルの名、姓、電話、その他のフィールドを挿入したいと考えています。これは可能ですか?
2 に答える
どのようなデータが投稿されても、必要な数のテーブルに挿入できます。コントローラーはテーブルとは関係がないため、制限はありません。
何かを書いてみることをお勧めします。それを機能させることができれば、何が機能していないかを説明するために、ここにその試みを投稿してください (スタック オーバーフロー...この特定の投稿ではありません)。それは、漠然とした非コード固有の質問ではなく、SO 形式により適しています。
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 つのメソッドを作成します。SaveGuest
とSaveReservation
。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!");
}
}