所以我在 MySQL 中有一个表,其中包含行 Date
、Username
和 Hours
。我想要做的是根据从另一个表引用的两个外键值(Date
和 Username
)生成主键
由于用户在某一天只能工作 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/