剛接觸 SQL 的學生。我知道類似的問題已在此處多次詢問,但我似乎無法弄清楚問題出在哪里。我正在制作一個記錄血壓的基本專案。我的想法是,以下代碼將初始化用戶表(跟蹤誰登錄)和讀數表(血壓讀數)的模式:
CREATE DATABASE IF NOT EXISTS bloodpressure;
USE bloodpressure;
CREATE TABLE IF NOT EXISTS appusers (
userid INT AUTO_INCREMENT PRIMARY KEY NOT NULL,
username VARCHAR(25) UNIQUE NOT NULL,
psword VARCHAR(25) NOT NULL
);
CREATE TABLE IF NOT EXISTS bpreadings (
reading INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
user_id INT NOT NULL,
sys DECIMAL(3 , 0 ) NOT NULL,
dia DECIMAL(3 , 0 ) NOT NULL,
pulse DECIMAL(3 , 0 ) NOT NULL,
FOREIGN KEY (user_id)
REFERENCES appusers (userid)
);
我遇到的問題是錯誤代碼:
Error Code: 1364. Field 'user_id' doesnt have a default value
這是在我運行之后:
INSERT INTO appusers (username, psword) VALUES ("user1", "pwd1");
它運行正確,然后嘗試運行:
INSERT INTO bpreadings (sys, dia, pulse) VALUES (128, 72, 88);
我最初的想法是使用 FK 從 appusers 中的用戶 ID 填充它,但它不會延續。我認為我不需要 readings.user_id 的默認值。我還檢查了插入帶有資料的應用用戶,并且主鍵用戶 ID 正確填充和自動增量。我只是在努力讓它延續下去。是我遺漏了一些簡單的東西還是設計中的整體缺陷?
先感謝您!
uj5u.com熱心網友回復:
這是因為您將 user_id 宣告為 NOT NULL 屬性,這意味著它不能為空,您需要將查詢更改為如下內容:
INSERT INTO bpreadings (user_id, sys, dia, pulse) VALUES (1, 128, 72, 88);
另一種方法是洗掉表創建時的“NOT NULL”條件,如下所示:
CREATE TABLE IF NOT EXISTS bpreadings (
reading INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
user_id INT,
sys DECIMAL(3 , 0 ) NOT NULL,
dia DECIMAL(3 , 0 ) NOT NULL,
pulse DECIMAL(3 , 0 ) NOT NULL,
FOREIGN KEY (user_id)
REFERENCES appusers (userid)
);
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/453106.html
標籤:mysql sql 数据表 外键 mysql-错误-1364
