查看“SQLite3的有用提示”的源代码
←
SQLite3的有用提示
跳到导航
跳到搜索
因为以下原因,您没有权限编辑本页:
您请求的操作仅限属于该用户组的用户执行:
用户
您可以查看和复制此页面的源代码。
以下是关于SQLite3的一些有用的提示: <br> == 创建好的表 == 在表中使用<code>INTEGER PRIMARY KEY AUTOINCREMENT</code>作为一列是一个很好的主意。这确保了两件事: * <code>INTEGER PRIMARY KEY</code>:通过重用SQLite3内置的<code>rowid</code>列来提高性能。 * <code>AUTOINCREMENT</code>:未来的行将不会具有与已删除的旧行相同的ID。这可以防止潜在的错误和安全漏洞。 <br> 如果你不使用<code>INTEGER PRIMARY KEY</code>,那么你必须在所有主键列中使用<code>NOT NULL</code>。否则,你将成为SQLite3的一个bug的受害者,该bug允许主键为<code>NULL</code>。 <br> 任何具有<code>INTEGER PRIMARY KEY</code>的列在将其值设置为<code>NULL</code>时都会自动递增。但是,如果没有<code>AUTOINCREMENT</code>,这种行为只能确保与当前存在的行的唯一性。 <br> 应该注意的是,<code>NULL</code>值彼此之间被视为唯一的。在使用<code>UNIQUE</code>约束或其他相等性测试时,这会有影响。 <br> == 默认值 == 当一个列有<code>DEFAULT</code>值时,只有在<code>INSERT</code>语句没有指定值时才会应用它。如果<code>INSERT</code>语句指定了一个<code>NULL</code>值,则不会使用<code>DEFAULT</code>值。 <br> == 外键 == 如果子列的值为<code>NULL</code>,则不会强制实施外键约束。为了确保关系始终得到实施,请在子列上使用<code>NOT NULL</code>。 <br> 示例: <syntaxhighlight lang="sql">CREATE TABLE comments (value TEXT, user_id INTEGER NOT NULL REFERENCES users);</syntaxhighlight> <br> 外键子句可以跟随<code>ON DELETE</code>和/或<code>ON UPDATE</code>,可能的值如下: * <code>SET NULL</code>:如果父列被删除或更新,子列变为<code>NULL</code>。 ** ''注意:如果子列具有<code>NOT NULL</code>,这仍然会导致约束冲突''。 * <code>SET DEFAULT</code>:如果父列被更新或删除,子列变为其默认值。 ** ''注意:如果子列的默认值与实际父行不对应,这仍然会导致约束冲突''。 * <code>CASCADE</code>:如果父行被删除,子行也被删除;如果父列被更新,新值会传播到子列。 <br>
返回至“
SQLite3的有用提示
”。
导航菜单
个人工具
登录
命名空间
页面
讨论
大陆简体
查看
阅读
查看源代码
查看历史
更多
搜索
导航
首页
基础知识
正则表达式
Markdown
分布式
项目管理
系统集成项目管理基础知识
云原生
Docker
云原生安全
云原生词汇表
十二因素应用
Kubernetes
音频处理
音频合成
Edge-tts
CMS系统
Docsify
VuePress
Mediawiki
自动生成
Marp
CI/CD
GitLab
设计
颜色
平面设计
AI
数字人
操作系统
GNU/Linux
数据库
Mysql
工具
链入页面
相关更改
特殊页面
页面信息