2016-11-20 8 views
0

したがって、私は、行にDate,Username、およびHoursというテーブルを持っています。私ができるようにしたいのは、別のテーブルから参照されるDateUsernameという2つの外部キー値に基づいてプライマリキーを生成することです。ユーザーはある日にX時間しか働かせませんが、日々。もちろん、複数のユーザーが同じ日に作業することができます。しかし、それらを区別するのはユーザー名です。特定のユーザーを自分と区別するのは、彼らが働いた日です。私はこれを行うことができるようにしたいどのような2つの外部キーに基づいて異なるプライマリキーを持つ方法

はPKフィールドが、私はちょうどそれがユーザー名と日付あるかどうかをテストするためにPHPでSQLクエリを作成すると考えられてきた

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

のようなSQLクエリを持っている生成しましたテーブルの中に挿入したり更新したりすることができます。しかし、それは醜い仕事のように思えますが、確かにこれを達成する方法がなければなりません。

+0

あなたは複合キーを意味します。これはユニークです – ArtisticPhoenix

+0

「日付」と「ユーザー名」に一意のキーを作成してみませんか? – 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) 
関連する問題