如何在 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 值视为彼此独立,但是有没有办法解决这个问题?
我正在使用一个通常提供 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)
但是当他们提供数字金额时它会中断。解组结构时进行类型检查的最佳方法是什么?