我挺數據庫小白:-(如果我有一個簡單的檯面設計,就像這樣:限制訪問行的子集在MySQL
CREATE TABLE IF NOT EXISTS picture
(
ID INT NOT NULL AUTO_INCREMENT,
userID INT NOT NULL,
name VARCHAR(150),
PRIMARY KEY(ID),
FOREIGN KEY (userID) REFERENCES user(ID)
)ENGINE=InnoDB
和描述,例如,像這樣:
+----+--------+------+
| ID | userID | name |
+----+--------+------+
| 1 | 1 | john |
| 2 | 1 | jack |
| 3 | 2 | amir |
| 4 | 2 | chan |
| 5 | 2 | jose |
| 6 | 3 | jane |
| 7 | 3 | buba |
+----+--------+------+
我將如何設計出滿足以下兩個約束數據庫:
- 用戶
1
,2
的d3
可以將新條目添加到pictures
表中。 - 用戶
1
,2
和3
可以修改只有那些行具有userID
小號1
,2
和3
,respecitvely
我知道這可能是不平凡的,所以隨意問任何其他問題和我將相應地編輯這個問題。
也許在表上添加一個觸發器,拒絕基於用戶名的行修改? – 2012-04-16 06:29:16
我也考慮過它,但後來認識到它可能不適用於廣泛的更新語句_如果OP想只更新匹配當前用戶/更新參數的行並忽略其他參數。 – BluesRockAddict 2012-04-16 06:34:09
謝謝你的回覆。我很好奇這將如何防止用戶刪除其他人的數據行?無論如何,我可以強制執行這一點,就像Corey提到的那樣(「觸發器」)。 – puk 2012-04-16 07:13:38