34

私は2つのテーブルを持っています:

university

university_id(p.k) | university_name

およびuser

uid | name | university_id(f.k)

ユーザーテーブルでuniversity_id NULLを維持する方法は?

私は1つのクエリのみを記述しています。私のクエリは次のとおりです。

INSERT INTO user (name, university_id) VALUES ($name, $university_id);

ここで$university_idは、フロントエンドからnullにすることができます。

universityテーブルはデフォルトで私が設定します。

フロントエンドでは、学生は大学名を選択し、それに応じてテーブルにuniversity_id渡されますが、学生が大学名を選択していない場合は、フィールドのテーブルにusernull値を渡す必要があります。useruniversity_id

4

3 に答える 3

53

nullを保存できるようuniversity_idに、テーブルの列に値userを許可するだけです。NULL

CREATE TABLE user
(
   uid INT NOT NULL,
   Name VARCHAR(30) NOT NULL, 
   university_ID INT NULL,    -- <<== this will allow field to accept NULL
   CONSTRAINT user_fk FOREIGN KEY (university_ID)
       REFERENCES university(university_ID)
)

更新1

あなたのコメントに基づいて、あなたは挿入するべきであり、ではNULLありません''

insert into user (name,university_id) values ('harjeet', NULL)

更新2

$university_id = !empty($university_id) ? "'$university_id'" : "NULL";
insert into user (name,university_id) values ('harjeet', $university_id);

SQL Injection補足として、変数の値(s)が外部からのものである場合、クエリは脆弱です。それを防ぐ方法については、以下の記事をご覧ください。を使用PreparedStatementsすると、値を一重引用符で囲む必要がなくなります。

于 2013-02-26T06:38:59.467 に答える
4

ここで、外部キーがuser_idあり、そのためにnull値を挿入したいとします。

ここに画像の説明を入力してください

外部キーにnull値を挿入するには、チェックボックスをオンにする必要があります。

于 2013-02-26T06:47:28.337 に答える
1

MySQL InnoDBを使用していて、FK列でNULLを許可し、デフォルトとしてNULLを使用していても、エラーが発生していました。そこで、SET構文を使用しました。

INSERT INTO (table) SET value1=X...

そして、私はFK列を設定しません。

于 2015-09-20T01:02:03.083 に答える