我有下表:
CREATE TABLE tab (
id SERIAL PRIMARY KEY,
code TEXT NOT NULL,
data TEXT
)
在某些情况下,我想插入一个新行,确保代码列由 id 列生成。在其他情况下,code
由用户提供。
例如:
INSERT INTO tab(code, data) VALUES ('code: ' || id::TEXT, 'my data');
预期的结果是这样的:
ID | 代码 | 数据 |
---|---|---|
1 | 代码:1 | 美国广播公司 |
2 | 代码:2 | xyz |
INSERT INTO tab(code, data) VALUES ('user.provided.code', 'my data');
预期的结果是这样的:
ID | 代码 | 数据 |
---|---|---|
1 | 代码:1 | 美国广播公司 |
2 | 代码:2 | xyz |
3 | user.provided.code | xyz |
是否可能在一个声明中?