如何解决SQLITE:使用主键约束合并来自不同数据库的表
我想连接/附加来自 2 个不同数据库(数据库 X 和 Y)的表。
ATTACH "all\tab_X.db" AS db1;
ATTACH "all\tab_Y.db" AS db2;
INSERT INTO db1.PAYMENT SELECT * FROM db2.PAYMENT
但是这给了我这个错误:唯一约束失败:PAYMENT.ID
如何创建一个将 ID 与数据库名称(例如:X_123、Y_123)组合在一起的新列并将其设为主键?
表 DB X
Pmt_ID | P_CUSTOMER_NAME | P_CASH_AMOUNT |
---|---|---|
1 | ABC 企业 | 1035.18 |
2 | RAS 控股 | 385.19 |
3 | SEMANGAT BHD | 622.21 |
表数据库 Y
Pmt_ID | P_CUSTOMER_NAME | P_CASH_AMOUNT |
---|---|---|
1 | ZNZ MINI MARKET | 338.14 |
2 | SEMANGAT SDN BHD | 298.92 |
3 | TAFFANY 营销 | 253.34 |
我想要的结果
PK | Pmt_ID | P_CUSTOMER_NAME | P_CASH_AMOUNT |
---|---|---|---|
X1 | 1 | ABC 企业 | 1035.18 |
X2 | 2 | RAS 控股 | 385.19 |
X3 | 3 | SEMANGAT BHD | 622.21 |
Y1 | 1 | ZNZ MINI MARKET | 338.14 |
Y2 | 2 | SEMANGAT SDN BHD | 298.92 |
Y3 | 3 | TAFFANY 营销 | 253.34 |
解决方法
首先附上3个数据库:
ATTACH "all\tab_X.db" AS db1;
ATTACH "all\tab_Y.db" AS db2;
ATTACH "all\tab_Z.db" AS db3;
创建新表:
CREATE TABLE db3.PAYMENT(Pmt_ID TEXT PRIMARY KEY,P_CUSTOMER_NAME TEXT,P_CASH_AMOUNT REAL);
最后插入行:
INSERT INTO db3.PAYMENT(Pmt_ID,P_CUSTOMER_NAME,P_CASH_AMOUNT)
SELECT 'X' || Pmt_ID,P_CASH_AMOUNT FROM db1.PAYMENT
UNION ALL
SELECT 'Y' || Pmt_ID,P_CASH_AMOUNT FROM db2.PAYMENT
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。