2016-11-20 87 views
0

因此,我在MySQL中有一个表,其行数为DateUsernameHours。我希望能够做的就是关闭一个主键基于为DateUsername从另一个表如何根据2个外键创建不同的主键

引用,因为用户只能在某一天上班X小时两个外键值来生成,但可以明显地工作,许多天。当然,多个用户可以在同一天工作。但是,区分它们的是他们的用户名。而将每个特定用户与他自己区分开来的是他们工作的日子。

我希望能够用这个做产生的PK场是有像

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

我在PHP视为只是让一个SQL查询的SQL查询来测试,如果它的用户名和日期在表中,并从那里进行插入或更新。但这似乎是一个丑陋的工作,当然必须有一种方法来实现这一点。

+0

您的意思是一个复合键,这是唯一的 – ArtisticPhoenix

+0

为什么不在'Date'和'Username'上创建一个唯一的键? – Steve

回答

0

组合主键也称为组合键。 与这些键的示例表格是:

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

你ofcourse也可以改变你的表的查询。

ALTER TABLE Shift 
ADD PRIMARY KEY (Date, Username)