Tôi có hai bảng giống hệt nhau được đặt trong hai cơ sở dữ liệu giống hệt nhau (có tên khác). Tôi muốn kết hợp hai bảng này, nhưng khóa chính của họ được sử dụng trong các bảng khác,Cập nhật MYSQL tất cả các giá trị khóa ngoài
các bảng giống như thế này:
Bảng A
id column1 column2 column3
___ ________ _______ ________
1 text text text
2 text text text
3 text text text
Bảng B
id column1 column2 column3
___ ________ _______ ________
2 text text text
3 text text text
4 text text text
các bảng được liên kết với Bảng A
liên kết Một
id column1 tableA_ID
___ ________ _______
1 text 2
2 text 3
3 text 4
liên kết B
id column1 tableA_ID
___ ________ _______
1 text 3
2 text 3
3 text 2
Xin lưu ý, các bảng có giống hệt id
's, điều này có nghĩa là khi tôi làm việc hợp nhất, tôi phải thay đổi id
của bảng thứ hai. Hãy nhớ rằng các khóa chính của bảng thứ hai là được sử dụng trong các bảng khác.
tôi đã viết truy vấn này để hợp nhất hai bảng:
INSERT INTO db_A.`Table_A`(`column2`,`column3`)
SELECT `column2`,`column3` FROM db_B.`Table_B`;
truy vấn này sẽ sao chép một cách chính xác các hồ sơ của bảng thứ hai để bảng đầu tiên.
Bây giờ tôi cũng muốn di chuyển dữ liệu của các bảng được liên kết với Table B
, tôi có thể sử dụng cùng một truy vấn, nhưng bây giờ khóa ngoại sẽ không khớp, vì ID
chúng đã được liên kết với đã bị thay đổi.
Làm cách nào để cập nhật chúng để ID
sẽ khớp lại?
NB: Tôi không có ON UPDATE CASCADE hạn chế trên những bảng
Tôi hy vọng điều này làm cho ý nghĩa, tôi sẽ cố gắng để cải thiện vấn đề này để mọi người hiểu được nó.
Cơ sở dữ liệu Thông tin
Type : MySQL
Engine: MyISAM
Cập nhật ID thành phạm vi duy nhất, hợp nhất. –
Bạn muốn cập nhật tất cả ID của 'Table_B' và tham chiếu của nó trước khi hợp nhất? mmm .... làm thế nào đến tôi đã không bao giờ nghĩ về điều đó, ý tưởng tốt đẹp –
Bạn nên chuyển sang InnoDB. Cho đến lúc đó, không có câu trả lời 'FOREIGN KEY' nào được áp dụng. –