【问题标题】:Insert multiple values into the same row for a single foreign key将多个值插入单个外键的同一行
【发布时间】:2021-08-14 08:25:42
【问题描述】:

我正在为酒店预订创建一个项目,并且我想将多个值插入到一个列中,该列是具有主键列的表中的外键,但是当它是主键时不能插入重复键并且无法插入与我在此表中用作外键的主列中插入的值不同的值,我该怎么办?

澄清

我有一个用于预订的表和另一个用于酒店服务的表,[Reservation] 表中有一个列是主键 (ReservationID),[Hotel_Services] 表中有一个列我用作[Reservation] 表的外键,即 (ServiceID)。

我想要在每个预订中插入多个服务 ID,以指示每个客人添加到他的预订中的服务,我该怎么做?

表 #1:Reservation

`ReservationID` (primary key) e.g 10,20,30

表 #2:Hotel_Services

`ServiceID` (foreign key to `Reservations`) e.g 1, 2, 3

期望的结果:将多个服务 ID 添加到每个预订中 例如:

Reservation 10 has 1,2 services
Reservation 20 has 1,3 services
Reservation 30 has 2,3 services

【问题讨论】:

  • 您的数据库设计不正确。您需要一个 Reservation-Service 链接表来允许多对一关系。
  • 我需要知道如何为每个预订添加多项服务,而不仅仅是一项服务?因为当我无法在表中有主键的情况下将多个值添加到外键中时,我需要将多个值添加到
  • 我提到了两个表 [Reservation]、[Hotel Services] 并且我在它们之间有关系,因为我将 Table2 中的一列作为外键放在 Table1 中,所以它们之间存在关系他们,但请澄清我是否需要添加另一个表格以及我应该添加什么
  • 非常感谢这个链接非常有用

标签: sql sql-server


【解决方案1】:

你需要一个表ReservationServices,定义如下:

create table ReservationServices (
    ReservationServiceId int identity primary key,
    ReservationId int not null references reservations(reservationid),
    ServiceId int not null references services(serviceid);
);

那么您的数据将如下所示:

ReservationServiceId     ReservationId    ServiceId
       1                     10               1 
       2                     10               2 
       3                     20               1 
       4                     20               3
       . . .

因此,为预订插入新服务就像在此表中插入新行一样简单。

【讨论】:

  • 非常感谢,感谢
  • @элдарБеной 。 . .如果这回答了您的问题,您可以接受答案。
猜你喜欢
  • 2016-06-26
  • 1970-01-01
  • 2011-06-14
  • 2023-03-12
  • 1970-01-01
  • 2020-03-11
  • 2013-07-21
  • 2023-03-17
  • 1970-01-01
相关资源
最近更新 更多