SQLLite 中多字段组成唯一(主键)约束

2021-10-01  乐帮网

sqlite

SQLLite中多字段约束怎么设置呢?我们常用的是设置一个字段的约束设置为unique。如果是要约束多个字段呢?通常我们是这样使用的:

Create Table test(code varchar(10) unique not null)

Insert into test(code)
values('00000');


当重复执行 Insert时会遇到错误:[20:45:52] Error while executing SQL query on database 'test': UNIQUE constraint failed: test.code

如果我们设置两个字段的唯一约束呢?以下是个简单的示例:

Create Table devices(
    ID INTEGER PRIMARY KEY AUTOINCREMENT, 
    code varchar(10) not null,
    model char(4) not null,
    name text not null,stauts INTEGER NOT NULL DEFAULT (0),
    updatedate DATETIME DEFAULT (datetime('now', 'localtime') ) ,
    updater TEXT DEFAULT(''),
    UNIQUE(code, model) ON CONFLICT REPLACE);


Insert into devices(code,model,name)
Values('RTM-2019-QWM','W001','模型1')


Insert into devices(code,model,name)
Values('RTM-2019-QWM','W001','模型2')

执行以上语句会有什么结果呢?它可能会得到你想不到的结果,
[20:38:14] Query finished in 0.024 second(s). Rows affected: 1

重复执行也没有问题,但是会执行REPLACE,但表中数据始终是一条。

ID    code    model    name    stauts    updatedate    updater
4    RTM-2019-QWM    W001    模型2    0    2021-10-01 20:39:27    
 

 

公众号二维码

关注我的微信公众号
在公众号里留言交流
投稿邮箱:1052839972@qq.com

庭院深深深几许?杨柳堆烟,帘幕无重数。
玉勒雕鞍游冶处,楼高不见章台路。
雨横风狂三月暮。门掩黄昏,无计留春住。
泪眼问花花不语,乱红飞过秋千去。

欧阳修

付款二维码

如果感觉对您有帮助
欢迎向作者提供捐赠
这将是创作的最大动力