php - 如何根据 2 个外键创建不同的主键

标签 php mysql sql-server

所以我在 MySQL 中有一个表,其中包含行 DateUsernameHours。我想要做的是根据从另一个表引用的两个外键值(DateUsername)生成主键

由于用户在某一天只能工作 X 小时,但显然可以工作很多天。当然,多个用户可以在同一天工作。但区分他们的是他们的用户名。每个特定用户与他自己的区别在于他们工作的天数。

我希望能够使用这个生成的 PK 字段执行 SQL 查询,例如

INSERT INTO Shift (`Date`, `Username`, `Hours`)
VALUES('$Date', '$username', 5) 
ON DUPLICATE Key UPDATE `Date` = '$today', `Username`= '$username', Hours= $TotalHr

我考虑过在 PHP 中进行 SQL 查询来测试用户名和日期是否在表中,然后从那里进行插入或更新。但这似乎是一个丑陋的解决方法,当然必须有一种方法来实现这一点。

最佳答案

组合主键也称为复合键。 包含这些键的示例表如下:

CREATE TABLE Shift(
   Date DATETIME,
   Username VARCHAR(75),
   Hours INT(11),
   PRIMARY KEY (Date, Username)
) 

您当然也可以通过查询更改表。

ALTER TABLE Shift
ADD PRIMARY KEY (Date, Username)

关于php - 如何根据 2 个外键创建不同的主键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40709259/

相关文章:

php - Symfony2 存储库标准文件夹或命名空间

javascript - 如何在href中添加半链接?

php - 将 session 存储为关联数组

php - CakePHP:编号分页结果

php - 从 MySQL 搜索 Google map 多边形区域

c# - 谁能告诉我为什么这个 SQL 查询不起作用

php - xmlHttpRequest 检查 mysql 数据库中的更改

mysql - 在 MySQL 数据库中增加计数器的最快方法

sql - T-SQL 确定结果集中的最低位值

c# - 防止多重请求 - WebAPI