【发布时间】:2019-11-08 11:38:51
【问题描述】:
我无法做到并发现如何在与单个主键关联的单个列中插入多个值。
- 我已启用主键(packageid)的自动递增
-
serviceidF 是外键
for (int i = 0; i < 2; i++) { if (i == 0) { query = "Insert Into tbl_Packages (packageName, packagePrice, serviceId_F) values ('" + _ppnM3 + "', '" + _pppM3 + "', '" + _i1M3 + "')"; cmd = new SqlCommand(query, PC.connect()); cmd.ExecuteNonQuery(); PC.disconnect(); } else if (i == 1) { query1 = "Insert Into tbl_Packages (packageName, packagePrice, serviceId_F) values ('" + _ppnM3 + "', '" + _pppM3 + "', '" + _i2M3 + "')"; cmd1 = new SqlCommand(query1, PC.connect()); cmd1.ExecuteNonQuery(); PC.disconnect(); } }
【问题讨论】:
-
如果您的 packageId 是主键,那么它将不允许您在多行中插入相同的值。 PK 允许非空值和唯一值。请检查您的数据模型。
-
@RajPaliwal 我知道 PK 允许非空值和唯一值。我要求解决方案为与一个主键关联的单个字段获取多个值。
-
请尝试创建具有多列的
composite primary键。请注意,在这种情况下,所有值的组合必须是唯一的。它可以接受PackageId的相同值,但其余列必须是唯一的 -
为此,我认为您应该使用另一个表作为详细信息表。
-
@Hasnain 如果它是一个 PK,它就不能有多个与之关联的行。这就是数据库的工作方式。解决方案取决于包和服务之间的关系。如果它是一对多的,即每个服务只能与一个包相关,请在您的服务表中放置一个
PackageID列。否则创建一个单独的表,例如PackageServices,其中 PackageId 和 ServiceId 列都是 PK 的一部分
标签: c# sql sql-server database rdbms