加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

如果sqlite3满足条件,则插入表中

发布时间:2020-12-12 18:59:21 所属栏目:百科 来源:网络整理
导读:如果我有两个表:文件(id,所有者)和共享(file_id,用户),其中所有者和用户将是理论用户表中的主要ID,那么只有在共享所有者进行共享时才能将条目插入共享那个文件? 这是一个简化的示例,因此我只使用文字作为执行共享操作的文本 – 通常此值将来自会话.所以,如
如果我有两个表:文件(id,所有者)和共享(file_id,用户),其中所有者和用户将是理论用户表中的主要ID,那么只有在共享所有者进行共享时才能将条目插入共享那个文件?

这是一个简化的示例,因此我只使用文字作为执行共享操作的文本 – 通常此值将来自会话.所以,如果我有:

files:
id: 1,owner: 1

并且用户2想要查看文件1,我会使用此查询:

insert into share values (1,2)

但这是不允许的 – 用户2不拥有文件1,用户1没有.我试图在一个查询中执行此操作,但我无法弄明白.我试过了:

case when (select owner from files where id=1) is 2
    then (insert into share values (1,2));

case (select owner from files where id=1) is 2
    then (insert into share values (1,2));

insert into share values (1,2)
    where 2 not in (select owner from files where id=1)

它们都是语法错误.我是从Python做的,所以在这个查询之后,我只检查Cursor.rowcount以查看它是1还是0,如果它是0,那么用户没有权限来完成操作.

如何正确编写此查询?

解决方法

请允许我建议我的方法作为答案:

insert into share select id,2 as file_id from files where id=1 and owner=2;

您的Share表中不需要非null子句或外键,也不需要捕获异常.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读