在項目分配中,我希望在其他部分更改值後重置PRIMARY KEY
的一部分。例如:使AUTO_INCREMENT在更改父代時自行重置ID
CREATE TABLE shopping_center(
centerID INTEGER AUTO_INCREMENT,
centerName CHAR(50),
CONSTRAINT center_PK PRIMARY KEY(centerID));
CREATE TABLE staff(
staffID INTEGER AUTO_INCREMENT,
centerID INTEGER,
name VARCHAR(50),
CONSTRAINT staff_PK PRIMARY KEY(staffID, centerID));
ALTER TABLE staff
ADD CONSTRAINT staff_FK
FOREIGN KEY(centerID)
REFERENCES shopping_center(centerID);
的MySQL AUTO_INCREMENT
功能不能正常工作,因爲我打算在這種情況下。當我插入這些值(記住AUTO_INCREMENT
功能上的ID,因爲我不定義在INSERT
報表centerID
或staffID
):
INSERT INTO shopping_center (centerName) VALUES("A Shopping Center");
INSERT INTO shopping_center (centerName) VALUES("Another Shopping Center");
INSERT INTO staff (centerID, name) VALUES(1, "Staffmember 1 in centerID 1");
INSERT INTO staff (centerID, name) VALUES(1, "Staffmember 2 in centerID 1");
INSERT INTO staff (centerID, name) VALUES(2, "Staffmember 1 in centerID 2");
INSERT INTO staff (centerID, name) VALUES(2, "Staffmember 2 in centerID 2");
我得到這樣的結果:
SELECT centerID, staffID, name FROM staff;
+----------+---------+-----------------------------+
| centerID | staffID | name |
+----------+---------+-----------------------------+
| 1| 1| Staffmember 1 in centerID 1 |
| 1| 2| Staffmember 2 in centerID 1 |
| 2| 3| Staffmember 1 in centerID 2 |
| 2| 4| Staffmember 2 in centerID 2 |
+----------+---------+-----------------------------+
但我想要的是staffID
重置爲1,當centerID
更改值。這是我想要的結果(注意staffID
值的變化):
SELECT centerID, staffID, name FROM staff;
+----------+---------+-----------------------------+
| centerID | staffID | name |
+----------+---------+-----------------------------+
| 1| 1| Staffmember 1 in centerID 1 |
| 1| 2| Staffmember 2 in centerID 1 |
| 2| 1| Staffmember 1 in centerID 2 |
| 2| 2| Staffmember 2 in centerID 2 |
+----------+---------+-----------------------------+
由於PRIMARY KEY
的要求總是在這種情況下獨特的,我不明白爲什麼這不應該工作。有什麼我想在這裏實現的解決方案?
這不是auto_increment的工作方式。 auto_increment只爲最後插入的值添加一個值。 – Jens
AUTO_INCREMENT功能在此之前爲我完成了這項工作,但它在工作時以及不工作時似乎是隨機的。我認爲這可能是按照正確的順序設置PRIMARY KEY,或者按順序設置FOREIGN KEY,但到目前爲止,這對我來說似乎是隨機的。 – LifeOfAStudent
看來你對'auto_increment'的工作是什麼感到困惑。你知道,但是**真的知道,主鍵的工作是什麼? –