最近在做数码相框上的嵌入式开发,开发过程中使用的SQLite数据库,但是编码的过程中,遇到个问题,SQLite不支持外键约束,外键约束会被解析但不会被执行。
参考了网上的做法,自己做了个实验,用触发器来实现了SQLite的外键约束。
建表语句:
CREATE TABLE jokeItem
(
id integer primary key,
content TEXT,
classId integer
);
CREATE TABLE jokeClass
(
classId integer primary key,
className TEXT
);
创建插入触发器:
CREATE TRIGGER FK_INSERT
BEFORE INSERT ON jokeItem
FOR EACH ROW BEGIN
SELECT RAISE(ROLLBACK,'No this classId in jokeClass')
WHERE (SELECT classId FROM jokeClass WHERE classId = NEW.classId) IS NULL;
END;
插入操作的外键支持效果:
创建更新触发器:
CREATE TRIGGER FK_UPDATE
BEFORE UPDATE ON jokeItem
FOR EACH ROW BEGIN
SELECT RAISE(ROLLBACK,'No this classId in jokeClass')
WHERE (SELECT classId FROM jokeClass WHERE classId = NEW.classId) IS NULL;
END;
更新操作的外键支持效果:
创建删除触发器:
CREATE TRIGGER FK_DELETE
BEFORE DELETE ON jokeClass
FOR EACH ROW BEGIN
DELETE FROM jokeItem WHERE classId = OLD.classId;
END;
删除操作的外键支持效果:

- 大小: 25.5 KB

- 大小: 28.4 KB

- 大小: 10.8 KB
分享到:
相关推荐
当删除一个部门时,为避免外键约束错误,可以创建一个AFTER DELETE触发器自动将该部门的所有员工的dept_id设置为NULL。 创建触发器时使用的数据样例如下: ``` -- employees表 CREATE TABLE employees ( id ...
5. **SQLite外键.htm**:这可能是一个关于SQLite外键约束的HTML文档。外键是关系数据库中保持数据完整性的重要机制,它确保了引用的完整性和一致性。SQLite支持外键,但默认情况下是禁用的,需要在创建数据库时明确...
- 外键:SQLite 3.6.19及以上版本支持外键约束,确保数据完整性。 11. 封装和集成: 在实际开发中,通常会将这些基本操作封装成类库或框架,便于在项目中使用。例如,对于Python,可以创建一个`DBManager`类,...
10. **存储过程与触发器**:虽然SQLite本身不直接支持存储过程,但可以通过自定义函数和触发器实现类似功能,SqliteClient也提供了相应的接口。 通过学习和使用SqliteClient for D7,Delphi开发者可以快速掌握...
2. **数据库结构**:SQL Server与SQLite的表结构可能存在差异,例如字段类型、主键约束、外键约束等。工具需要处理这些差异,确保转换后的SQLite数据库能正确反映原始SQL Server的结构。 3. **数据类型映射**:SQL ...
这包括添加、删除和修改字段,设置主键和外键约束,以及调整字段属性(如类型、长度、是否允许为空等)。 4. SQL查询编辑器:SQLiteStudio内置了一个强大的SQL查询编辑器,支持自动补全、语法高亮和错误检查等功能...
5. **全面的特性支持**:包括事务处理、存储过程、触发器、视图、索引、主键、外键约束等,以及最新的SQLite特性,如WAL日志模式。 6. **自动类型映射**:`System.Data.SQLite.dll`能自动将.NET数据类型映射到...
例如,虽然SQLite不直接支持外键约束,但可以通过创建触发器来模拟类似的功能。例如,可以创建一个BEFORE INSERT触发器,当尝试插入新记录时,检查引用的外键是否存在,如果不存在则回滚事务。以下是一个简单的例子...
- 视图和触发器:创建视图来简化复杂的查询,设置触发器实现特定业务逻辑。 4. **适用于哪些场景**: - 开发者调试:开发过程中快速查看和修改SQLite数据库内容。 - 数据分析:对小型数据集进行分析和处理。 - ...
5. **表结构设计**:可以创建新表,修改现有表的结构,如添加、删除或修改字段,设置主键、外键约束,以及自增属性。 6. **索引管理**:创建和管理索引,优化查询性能。支持唯一索引、普通索引和全文索引。 7. **...
10. 外键约束:外键用于保持引用完整性,确保表间的数据关联性。 11. 兼容性:SQLite遵循SQL标准,但也有一些特有的扩展和语法,因此在编写SQL时需要注意兼容性问题。 12. 安全性:SQLite支持加密数据库选项,可以...
例如,它不支持触发器、外键约束、事务的回滚和保存点等特性,或者对这些特性的支持有限。这意味着SQLite更适合用于简单的应用,而复杂的数据完整性要求可能需要其他关系型数据库管理系统。 SQLite的体系结构包括多...
1. **数据库设计**:SQLite Expert允许用户通过拖放方式创建和编辑表格,设置字段类型、约束(主键、唯一、外键等)、默认值和自增属性。此外,还可以创建和管理索引,优化查询性能。 2. **SQL编辑与调试**:内置的...
定义表结构包括选择字段类型(如整数、文本、浮点数、日期等)、设置主键、外键约束以及自增属性。 3. 数据浏览:软件提供了一个表格视图,可以方便地查看数据库中的数据。你可以按需排序、过滤和搜索记录,甚至...
你可以新建表,设置字段类型、长度、约束等属性,并轻松调整表之间的关系,如外键。 3. **数据操作**:该工具提供了一套完整的数据操作工具,包括添加、编辑、删除记录,以及批量导入和导出数据。这对于数据的录入...
3. **表管理**:在SQLiteManager中,你可以创建、修改和删除表,设置字段类型、主键、外键约束,以及自增属性。同时,可以查看和编辑表中的数据,支持批量插入和更新。 4. **查询和视图**:SQLiteManager提供了一个...
1. 设计数据库结构:创建表格,定义字段类型,设置主键和外键约束。 2. 管理数据:插入、修改、删除记录,执行复杂的SQL查询。 3. 导入/导出数据:从CSV、Excel或其他数据库格式导入,或将数据导出为不同格式。 4. ...
它不支持某些SQL标准特性,例如外键约束和事务的高级特性。此外,虽然SQLite可以处理并发操作,但它并不适合高并发和需要复杂事务管理的应用场景,这类场景更适合使用如MySQL、PostgreSQL等其他关系型数据库管理系统...
- **部分SQL功能限制**:如不支持外键约束、嵌套事务、某些类型的连接操作等。 - **完整SQL支持**:包括触发器、事务管理等功能。 #### 二、Android集成SQLite Android在运行时环境中集成了SQLite,这意味着每个...