[英]How do I get the primary key being referenced by a foreign key of another table?
我在MySQL
有兩個表user
和userprofile
,並且在我的Web服務器上有一個php腳本,用於處理將數據插入這些表中。
這是用於定義表的SQL命令。
CREATE TABLE user (
USER_ID INT NOT NULL AUTO_INCREMENT,
USERNAME VARCHAR(20),
USER_PASSWORD VARCHAR(255),
PRIMARY KEY (USER_ID)
);
CREATE TABLE userprofile (
USER_ID INT NOT NULL,
FULL_NAME VARCHAR(255),
AGE INT,
FOREIGN KEY (USER_ID) REFERENCES user (USER_ID)
);
我可以使用PHP
函數內部執行的以下SQL
命令"INSERT INTO user (USERNAME, USER_PASSWORD) VALUES ('$username', '$hashedPassword')"
將PHP
user
表成功寫入數據庫表。我定義的
我現在遇到的問題是,我需要添加諸如FULL_NAME
和用戶的AGE
之類的信息。 由於我允許用戶稍后再包含此信息(由於用戶隱私,它們是可選的)。 在沒有USER_ID
情況下,如何准確填充數據庫表userprofile
?
我查看了用於創建數據庫表的文檔,並且相信我的定義是正確的。 我最初的想法是實現一個從數據庫中獲取當前用戶的USER_ID
的功能,然后使用該功能將其數據插入到userprofile
表中。 預期的行為,我想要的是增加與用戶之后SQL
上面的命令,在userprofile
也將有一行創建,因為它是由一個外鍵鏈接USER_ID
。 我不太確定如何保證這兩個表彼此同步。
要存儲用戶的姓名和年齡,您必須具有其USER_ID
。 這是因為您使用USER_ID
作為用戶的唯一標識符,並且它是userprofile
表中的外鍵。
通常,當用戶“登錄”(對您的網站意味着什么)時,您將確定其USER_ID
並將其用作會話變量(例如,在$_SESSION
),以便在后續頁面(例如,頁面)中使用它。他們在哪里編輯個人資料。
關於同步:根據您的定義,您無需與user
同時將記錄添加到userprofile
中。 您可以,但是實際上是空的,因為您尚不知道他們的姓名或年齡。
這就是說,你還需要檢查他們的是否userprofile
已經存在。 也就是說,您是要更新他們的個人資料還是將其添加到其中。 因此,在創建他們的用戶記錄時,創建他們的用戶配置文件記錄會更加簡單。 這樣,您就知道自己一直在更新。
您應該添加UNIQUE
約束USER_ID
在userprofile
模式。 這樣,您就不會意外添加重復記錄。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.