0

この例は、ここでいくつかの助けを借りて動作するようになりました:

http://sqlfiddle.com/#!2/92e87/1

ただし、テーブルのすべての子に情報を挿入しようとすると、(このコードを使用して) うまくいかないようです:

CREATE TABLE country (
    id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name varchar(255) NOT NULL
)
;

CREATE TABLE location (
    id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    name varchar(255) NOT NULL,
    coordinate varchar(255) NOT NULL,
    country_id integer NOT NULL REFERENCES country (id)
)
;

CREATE TABLE item (
    id integer NOT NULL PRIMARY KEY AUTO_INCREMENT,
    title varchar(60) NOT NULL,
    description varchar(900) NOT NULL,
    date datetime NOT NULL,
    source varchar(255) NOT NULL,
    link varchar(255) NOT NULL,
    location_id integer NOT NULL REFERENCES location (id)
)
;

Insert Into item (title) values ('Title');
Insert Into item (description) values ('Description');
Insert Into item (date) values ('1995-12-31T23:59:59Z');
Insert Into item (source) values ('Source');
Insert Into item (link) values ('Link');
Insert Into item (location_id) values ('1');

これはこれを行う正しい方法ですか?第二に、「説明」にはデフォルト値がありませんが、常に情報を入力する場合は必要ですか?

あなたが与えることができるどんな助けにも感謝します

4

2 に答える 2

2
Insert Into item (title, description, date, source, link, location_id) 
values ('Title', 'Description','1995-12-31T23:59:59Z','source','Link',1);

各挿入は、新しいレコードの挿入として機能します。したがって、上記のように、すべてのデータを 1 つの挿入ステートメントに結合する必要があります。

NOT NULL作成したテーブル定義で言及したため、SQL はデフォルト値を要求します。

于 2012-12-03T10:47:56.860 に答える
2

挿入ごとに、項目テーブルに新しいデータ行が作成されます。これはあなたが望むものだとは思いません。代わりに、次のようにします。

INSERT INTO item VALUES (NULL, [title], [description], [date], [source], [link], [location_id]);

[ および ] 内の項目を適切な値に置き換えます。

その列の値を指定しない INSERT ステートメントでは、データベースがそのフィールドに入力できるデフォルト値がないため、Description にはデフォルト値がないと言われています。

于 2012-12-03T10:46:24.320 に答える