小编7rh*_*vnn的帖子

具有空值的复合唯一约束

如何在 SQLite 中设置可以正确处理空值的复合唯一约束?通过示例可能可以更好地表达这一点:

CREATE TABLE people (
    id INTEGER PRIMARY KEY,
    first_name TEXT NOT NULL,
    last_name TEXT NOT NULL,
    suffix TEXT,
    UNIQUE (first_name, last_name, suffix)
);
Run Code Online (Sandbox Code Playgroud)

当多次输入带有后缀的人物时,该约束将按预期工作。

-- Last insert is denied
INSERT INTO people (first_name, last_name, suffix)
VALUES
    ('Joe', 'Dirt', 'Sr'),
    ('Joe', 'Dirt', 'Jr'),
    ('Joe', 'Dirt', 'Sr');
Run Code Online (Sandbox Code Playgroud)

然而,当多次插入没有后缀的人时,唯一约束就无法适应。

-- Both are permitted
INSERT INTO people (first_name, last_name)
VALUES
    ('Chris', 'Farley'),
    ('Chris', 'Farley');
Run Code Online (Sandbox Code Playgroud)

我知道 SQLite 将 null 值视为彼此独立,但是有没有办法解决这个问题?

sql sqlite unique-constraint

3
推荐指数
1
解决办法
816
查看次数

在 Go 中解组时键入检查 json 值

我正在使用一个通常提供 json 字符串值的 API,但它们有时会提供数字。例如,99% 的时间是这样的:

{
    "Description": "Doorknob",
    "Amount": "3.25"
}
Run Code Online (Sandbox Code Playgroud)

但无论出于何种原因,有时是这样的:

{
    "Description": "Lightbulb",
    "Amount": 4.70
}
Run Code Online (Sandbox Code Playgroud)

这是我正在使用的结构,它在 99% 的时间里都有效:

type Cart struct {
    Description string `json:"Description"`
    Amount      string `json:"Amount"`
}
Run Code Online (Sandbox Code Playgroud)

但是当他们提供数字金额时它会中断。解组结构时进行类型检查的最佳方法是什么?

游乐场:https : //play.golang.org/p/S_gp2sQC5-A

json go

2
推荐指数
1
解决办法
123
查看次数

标签 统计

go ×1

json ×1

sql ×1

sqlite ×1

unique-constraint ×1