2016-11-20 129 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)