如何在SQLITE3中创建一对多?
如何在SQLITE3中创建一对多?
我有2张桌子: Mans: _id name 1 antony 2 fred 和 point _id date point 1 23 77 24 99 2 25 78 5 0 我不懂SQL语法,请帮帮我. 通过什么iamkrillin illin虾-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对多的关系;因此,你应该把它变成1对多的表.我对CASCADE的东西不是很精通,但我会试着弄清楚它是如何适合的. 乍一看,它显示ON UPDATE CASCADE ON DELETE CASCADE不属于我的答案,因为删除最后一个referal不应删除referer. 看a different example: 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,description text,foreign key(id,name,description) references hard_candy ON DELETE CASCADE ON UPDATE CASCADE); INSERT INTO hard_candy VALUES(2,'A candy that explodes in your mouth.'); COMMIT; 在表的id-2描述字段中进行各种更新. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |