sqlite 我添加了主外键,成功了,但是删除主表的数据,外键的数据没有删除

例如工厂表和工人表,我删除了工厂,工人表里面还是有数据而且外键工厂_id还是在,siqlte主外键是不是还是需要什么东西啊。触发器,视图什么的?... 例如工厂表 和工人表,我删除了工厂,工人表里面还是有数据而且外键工厂_id还是在,siqlte主外键是不是还是需要什么东西啊。触发器,视图什么的? 展开
 我来答
  • 你的回答被采纳后将获得:
  • 系统奖励15(财富值+成长值)+难题奖励30(财富值+成长值)
kennychenxiang
2014-08-15 · TA获得超过201个赞
知道小有建树答主
回答量:180
采纳率:100%
帮助的人:178万
展开全部

需要设置级联删除

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
推荐于2016-01-20
展开全部
-- 创建测试主表. ID 是主键.
CREATE TABLE test_main (
  id      INT   NOT NULL,
  value   VARCHAR(10),
  PRIMARY KEY(id)  
);
-- 插入测试主表数据.
INSERT INTO test_main(id, value) VALUES (1, 'ONE');
INSERT INTO test_main(id, value) VALUES (2, 'TWO');
 
-- 创建测试子表.   (  注意,  这里要有一个 ON DELETE CASCADE )
CREATE TABLE test_sub (
  id      INT   PRIMARY KEY,
  main_id INT   REFERENCES  test_main(id)  ON DELETE CASCADE,
  value   VARCHAR(10)
);

-- 插入测试子表数据.
INSERT INTO test_sub(id, main_id, value) VALUES (1, 1, 'ONEONE');
INSERT INTO test_sub(id, main_id, value) VALUES (2, 2, 'TWOTWO');
 


   
-- 测试删除主表.
sqlite> DELETE FROM test_main WHERE id = 1;

-- 查看 子表数据是否被删除.
sqlite> select * from test_sub;
2|2|TWOTWO
追问
是成功了但是主要问题我的id是自增主键,比如主表两条数据1,2.子表一条数据1,对应主表的1,这时候删除主表1的数据,那么原来的2就会变成1,那么主表还是有1这条数据,子表能对应的到,它就不会去删除数据了
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式