web-dev-qa-db-ja.com

MySQLで複数のフィールドを主キーとして設定する方法は?

フィールドを持つテーブルがあります

従業員ID

何とか

blahblah2

.....

RecordMonth

RecordYear

  • したがって、各従業員は、月、年、Emp#の一致するエントリのみを持つ必要があります。テーブルを設定するにはどうすればよいですか。

では、従業員IDを月に1回更新できるが、一致する月と年に2つのエントリがないようにテーブルを設定するにはどうすればよいですか。

25
LOSTinDB

複合主キーを使用します。

CREATE TABLE yourtable 
  ( 
     employeeid  INT, 
     blahblah    VARCHAR(255), 
     blahblah2   VARCHAR(255), 
     recordmonth DATE, 
     recordyear DATE, 
     PRIMARY KEY (employeeid, recordmonth, recordyear) 
  ) 

テーブルが既に存在する場合は、古い主キーを削除します。

ALTER TABLE yourtable
DROP PRIMARY KEY;

そしてそれを再作成します:

ALTER TABLE yourtable
ADD PRIMARY KEY (employeeid, recordmonth, recordyear);
47