【问题标题】:sqlite automatically converts string to integer when inserting incorrect typessqlite 在插入错误类型时自动将字符串转换为整数
【发布时间】:2014-01-15 04:06:10
【问题描述】:

我正在做一些基本的 sqlite。我有一个名为 A 的关系。 2 个名为 C,D 的元组。元组接受整数值。但是当我尝试插入字符串值时,sqlite 仍然接受它们

对于经验:

插入A值('1','2');

上面的sql语句执行成功。那么 sqlite 会自动将“字符串”类型的值转换为整数值吗?换句话说,sqlite 不会检查元组的约束

【问题讨论】:

  • 不仅在 sqlite 上,其他数据库也接受引号 (') 中的整数值。在内部它将转换为整数并保存。

标签: string sqlite integer


【解决方案1】:

SQLite 使用dynamic typing;它将接受任何类型的值。

如果你真的希望数据库检查类型,添加一个 CHECK 约束:

CREATE TABLE A(
    C INTEGER CHECK(typeof(C) = 'integer'),
    D INTEGER CHECK(typeof(D) = 'integer')
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-05
    • 1970-01-01
    • 1970-01-01
    • 2021-02-14
    • 2014-09-05
    • 2020-09-12
    • 2011-05-15
    相关资源
    最近更新 更多