可以在引用表中插入没有匹配键的记录

时间:2015-10-07 21:37:05

标签: sqlite corona

这是我创建表格的方式:

CREATE TABLE IF NOT EXISTS countries ( id INTEGER PRIMARY KEY, name TEXT UNIQUE)
CREATE TABLE IF NOT EXISTS providences ( id INTEGER PRIMARY KEY, name TEXT UNIQUE, country_id INTEGER, FOREIGN KEY( country_id ) REFERENCES countries( id ) )

创建表时没有任何错误。

现在我需要插入一个国家/地区,它会被分配ID 1

INSERT INTO countries( name ) VALUES('sweden')

现在我想向我的国家插入一些天意:

INSERT INTO providences( name, country_id ) VALUES('Lappland', 1 )
INSERT INTO providences( name, country_id ) VALUES('Norrbotten', 2 ) <-- Oops! Non-existing country_id!

两个上帝都被插入但我期望只插入country_id = 1的上帝,因为数据库中没有id为2的国家。

我在这里错过了什么吗?

我在Corona SDK中使用的SQL。

1 个答案:

答案 0 :(得分:-1)

这对我有用。您需要传入country_id作为值。所以该省的id分别为1和2,而瑞典的country_id为1。

CREATE TABLE IF NOT EXISTS countries ( id INTEGER PRIMARY KEY, name TEXT);
CREATE TABLE IF NOT EXISTS providences ( id INTEGER PRIMARY KEY, name TEXT, country_id INTEGER, FOREIGN KEY( country_id ) REFERENCES countries( id ) );

INSERT INTO countries(id ,name ) VALUES(1,'sweden');
INSERT INTO providences( id, name, country_id ) VALUES(1,'Lappland', 1 );
INSERT INTO providences( id, name, country_id ) VALUES(2, 'Norrbotten', 1 );