3

2つの異なるスキーマの同じ構造を持つ2つのテーブルをマージしたいと思います。現在、私は次のクエリを通じてこれを行っています:

    INSERT INTO schema1.table1(col1,col2)
    SELECT col1,col2
    FROM schema2.table1;

このクエリは2つのテーブルを1つにうまくマージしますが、外部キーは更新されません。元の表と同じです。それで、それをする方法はありますか。

    CREATE TABLE  `research_delta`.`source` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `url` varchar(500) COLLATE utf8_bin NOT NULL,
  `createdOn` datetime NOT NULL,
  `modifiedOn` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  `isDeleted` tinyint(4) NOT NULL DEFAULT '0',
  `structure` mediumblob,
  `firstRunStatus` varchar(50) COLLATE utf8_bin NOT NULL DEFAULT '0',
  `isMaster` tinyint(4) DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='All the sources supported by the system';



CREATE TABLE  `research_delta`.`sourcetagitem` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `source` bigint(20) DEFAULT NULL,
  `tagItem` bigint(20) DEFAULT NULL,
  PRIMARY KEY (`id`),
  KEY `fk_source_sourcetagitem` (`source`),
  KEY `fk_tagItem_sourcetagitem` (`tagItem`),
  CONSTRAINT `fk_source_sourcetagitem` FOREIGN KEY (`source`) REFERENCES `source` (`id`) ON DELETE CASCADE ON UPDATE CASCADE,
  CONSTRAINT `fk_tagItem_sourcetagitem` FOREIGN KEY (`tagItem`) REFERENCES `tagitem` (`id`) ON DELETE CASCADE ON UPDATE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=287 DEFAULT CHARSET=utf8 COLLATE=utf8_bin;


CREATE TABLE  `research_delta`.`tagitem` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `name` varchar(100) COLLATE utf8_bin NOT NULL,
  `description` varchar(1000) COLLATE utf8_bin DEFAULT NULL COMMENT 'this field will contain any description details about the type of category or tag..',
  `parentId` bigint(20) DEFAULT NULL COMMENT 'if the category or tag in subject to be under any other catefory or tag then this field will contain the id of the category that it is under.',
  `createdOn` datetime DEFAULT NULL,
  `modifiedOn` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  `isDeleted` tinyint(4) NOT NULL DEFAULT '0',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=286 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='this table represents the tags and categories supported by a';

異なるスキーマの2つのtagitemテーブルをマージしてから、sourcetagitemテーブルをマージすると、外部キー、つまりtagitemは、マージ後に更新されたtagitemidで更新される必要があります。

ありがとう、

4

1 に答える 1

0

実際にそれらをマージする必要がありますか、またはデータをクエリするときにユニオンを使用できますか?

(SELECT * FROM schema1.table1) UNION (SELECT * FROM schema2.table1)

または、同じ方法でビューを作成します...

CREATE VIEW view1 AS  (SELECT * FROM schema1.table1) UNION (SELECT * FROM schema2.table1);

その中から気になるものを選んで

SELECT col1 FROM vv;
于 2012-08-31T15:46:43.647 に答える