如何在SQLITE3中創建一對多? 我有2個表:如何在SQLITE3中創建一對多?
Mans:
_id name
1 antony
2 fred
和
point
_id date point
1 23 77
24 99
2 25 78
5 0
我不知道SQL語法,幫助我,請。
如何在SQLITE3中創建一對多? 我有2個表:如何在SQLITE3中創建一對多?
Mans:
_id name
1 antony
2 fred
和
point
_id date point
1 23 77
24 99
2 25 78
5 0
我不知道SQL語法,幫助我,請。
其語法如下....
CREATE TABLE (MySecondTable) Foo INT FOREIGN KEY(Foo) REFERENCES MyFirstTable(PrimaryKeyField) ON DELETE CASCASDE ON UPDATE CASCASDE
僅適用於v3.6.1 +
illin蝦skrillin小人:你檢查我的答案? –
展望由什麼iamkrillin的illin shrimp- skrillin反派:
CREATE TABLE (points) points_id INT
FOREIGN KEY(man_id) REFERENCES mans(PrimaryKeyField)
ON DELETE CASCASDE ON UPDATE CASCASDE
這是一個真實世界的例子。假設你有一些向你推薦業務的人:你的員工,你的朋友,你做廣告的當地企業等等。進來的顧客被稱爲'referal'業務。每個人只被視爲一個參考,但是參考人員可能會參考許多參考(例如,一個僱員可能會提及20個新客戶,該僱員是您的推薦人,而該員工已經提出了20個推薦人)。所以,你有1個引用者和20個referals(一到多):
CREATE TABLE referal(
referal_id INTEGER UNIQUE NOT NULL PRIMARY KEY, //A customer can only be 1 referal.
referal_method TEXT, //How were they refered? By phone?
referer_id INTEGER , //Who refered them?
FOREIGN KEY(referer_id) REFERENCES referer(referer_id)); //Trace more about referer.
現在,它有可能不止一個人是指一個轉診,但我認爲,這是標準的商業做法是隻補償一個引用者。所以,你永遠不需要列出兩個查閱者。這將始終是1對1或1對多的關係;因此,你應該把它做成一對多的表格。我並不是很熟悉CASCADE的東西,但我會試着弄清楚它是如何適合的。
乍一看,ON UPDATE CASCADE ON DELETE CASCADE
不屬於我的答案,因爲刪除最後的參考不應該刪除引用者。
CREATE TABLE all_candy
(candy_num SERIAL PRIMARY KEY,
candy_maker CHAR(25));
CREATE TABLE hard_candy
(candy_num INT,
candy_flavor CHAR(20),
FOREIGN KEY (candy_num) REFERENCES all_candy
ON DELETE CASCADE)
如果您刪除的hard_candy
表中的硬糖,那麼你也從all_candy
表中刪除,因爲硬糖是一種糖,如果類型的糖果已經改變(例如,停止糖果),那麼無論如何,需要執行新的INSERT命令。
我在sqlite3中運行了ON UPDATE CASCADE和ON UPDATE DELETE的測試用例,它似乎沒有任何效果。也許他們不使用sqlite3的默認數據庫引擎,但官方SQLite網站上列出的功能是:a very descriptive, easy-to-follow example of ON UPDATE CASCADE by sqlite.org。閱讀並看看你的想法。
這是我用我的測試案例的模式:
BEGIN TRANSACTION;
CREATE TABLE candy(id integer primary key not null, name text, description text);
INSERT INTO candy VALUES(1,'Laffy Taffy', 'Delicious, soft candy.');
INSERT INTO candy VALUES(2,'Pop Rocks', 'A candy that explodes in your mouth.');
COMMIT;
BEGIN TRANSACTION;
CREATE TABLE hard_candy(id integer primary key not null, name text, description text, foreign key(id,name,description) references hard_candy ON DELETE CASCADE ON UPDATE CASCADE);
INSERT INTO hard_candy VALUES(2,'Pop Rocks', 'A candy that explodes in your mouth.');
COMMIT;
跑任一表的ID-2描述字段的各種更新。
我懷疑第二個表是這樣的 - 這些SQL表或您想要輸入的數據? – Mark
那是第二張表 –