如何在SQLITE3中创建一对多?

如何在SQLITE3中创建一对多?,第1张

概述如何在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 illi 如何在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 INTFOREIGN 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描述字段中进行各种更新.

总结

以上是内存溢出为你收集整理的如何在SQLITE3中创建一对多?全部内容,希望文章能够帮你解决如何在SQLITE3中创建一对多?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/1178875.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-02
下一篇 2022-06-02

发表评论

登录后才能评论

评论列表(0条)

保存