是否可以从1个控制器向2个表插入数据?

时间:2012-05-13 23:26:51

标签: sql sql-server

这是我的数据库。我想创建一个存储过程来将数据插入到Reservation表中。我想插入room_id,数据签入和其他字段,但我不想使用guest_id来放置来自Guest表的名字,姓氏,电话和其他字段。这可能吗?

enter image description here

2 个答案:

答案 0 :(得分:3)

无论发布什么数据,您都可以根据需要插入任意数量的表。控制器与表无关,因此没有限制。

我建议尝试写一些东西,如果你可以让它工作在这里你的尝试(堆栈溢出...不是这个特定的帖子)描述什么是无效的。这更符合SO格式,而不是模糊的非代码特定问题。

答案 1 :(得分:1)

我会创建2个存储过程。一个用于保存访客信息,另一个用于保存预订信息。

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

这是一个样本。您需要为所有非空列的db列添加字段。

现在创建2种方法来保存这些数据。 SaveGuestSaveReservation。从SaveGuest方法返回新保存的访客ID。现在在您的action方法调用中,首先是SaveGuest方法。检查方法的返回值。如果是有效号码,则表示保存了访客信息。使用该客户ID保存第二部分(预订);像这样的东西

public ActionResult SAve(YourViewMolde model)
{
int guestId=  SaveGuest("john","alex",....);
if(guestID>0)
 {
   SaveReservation(guestId,34,...);
 }
 else
 {
   model.AddModelError("","Error in saving Guest info!");
 }
}