微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SQLITE:使用主键约束合并来自不同数据库的表

如何解决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 举报,一经查实,本站将立刻删除。