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

SQLITE: Merge tables from different databases with Primary Key Constraint

我想 concatenate/append 来自 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

但是这给了我这个错误:UNIQUE 约束失败:PAYMENT.ID

如何创建一个将 ID 与数据库名称组合在一起的新列(例如:X_123、Y_123)并将其设为主键?

Table DB X

Pmt_ID P_CUSTOMER_NAME P_CASH_AMOUNT
1 ABC ENTERPRISE 1035.18
2 RAS HOLDING 385.19
3 SEMANGAT BHD 622.21

Table DB Y

Pmt_ID P_CUSTOMER_NAME P_CASH_AMOUNT
1 ZNZ MINI MARKET 338.14
2 SEMANGAT SDN BHD 298.92
3 TAFFANY MARKETING 253.34

我要的结果

PK Pmt_ID P_CUSTOMER_NAME P_CASH_AMOUNT
X1 1 ABC ENTERPRISE 1035.18
X2 2 RAS HOLDING 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 MARKETING 253.34

先附上3个数据库:

ATTACH "all\tab_X.db" AS db1;
ATTACH "all\tab_Y.db" AS db2;
ATTACH "all\tab_Z.db" AS db3;

新建 table:

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_CUSTOMER_NAME, P_CASH_AMOUNT FROM db1.PAYMENT
UNION ALL
SELECT 'Y' || Pmt_ID, P_CUSTOMER_NAME, P_CASH_AMOUNT FROM db2.PAYMENT