New Text Document
New Text Document
DELIMITER //
BEGIN
,ISMISSING BIT
);
FROM INFORMATION_SCHEMA.TABLES S
LEFT OUTER JOIN INFORMATION_SCHEMA.TABLES D ON D.TABLE_SCHEMA = @DESTINATIONDBNAME
AND S.TABLE_NAME = D.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLES S
-- Gets the columns, which are not part of any missing table, exist in source
FROM INFORMATION_SCHEMA.COLUMNS S
-- Gets the columns, which are not part of any missing table, exist in destination
FROM INFORMATION_SCHEMA.COLUMNS S
INNER JOIN INFORMATION_SCHEMA.TABLES T ON S.TABLE_NAME = T.TABLE_NAME AND
T.TABLE_SCHEMA = @SOURCEDBNAME
FROM INFORMATION_SCHEMA.COLUMNS S
AND
OR COALESCE(S.CHARACTER_MAXIMUM_LENGTH, 0) <>
COALESCE(D.CHARACTER_MAXIMUM_LENGTH, 0)
OR COALESCE(S.NUMERIC_PRECISION, 0) <>
COALESCE(D.NUMERIC_PRECISION, 0)
OR COALESCE(S.DATETIME_PRECISION,0) <>
COALESCE(D.DATETIME_PRECISION,0)*/
);
-- Gets the Indexes, which are not associated with constraints, exist only in
destination
FROM INFORMATION_SCHEMA.STATISTICS S
-- AND S.NON_UNIQUE = 1
-- Gets the Indexes, which are not associated with constraints, exist only in
source
FROM INFORMATION_SCHEMA.STATISTICS S
-- AND S.NON_UNIQUE = 1
-- Gets the Indexes, which are not associated with constraints, exist in both
databases but with difference in its properties
SELECT S.*
FROM (
FROM INFORMATION_SCHEMA.STATISTICS S
)S
INNER JOIN
(
SELECT S.TABLE_SCHEMA, S.TABLE_NAME, S.INDEX_NAME
FROM INFORMATION_SCHEMA.STATISTICS S
) D ON S.TABLE_NAME = D.TABLE_NAME
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS S
FROM INFORMATION_SCHEMA.TABLE_CONSTRAINTS S
FROM INFORMATION_SCHEMA.STATISTICS S
SELECT A.*
FROM (
SELECT
ELSE
END
') TABLE_DEFINITION
FROM DB_COMPARE S
,I.TABLE_NAME
,GROUP_CONCAT(CASE
CONSTRAINT_TYPE WHEN 'PRIMARY KEY' THEN 'PRIMARY' WHEN 'UNIQUE' THEN 'UNIQUE' ELSE
'' END, CASE WHEN INDEX_TYPE = 'BTREE' THEN ' KEY' ELSE CONCAT(' ', INDEX_TYPE, '
KEY ') END, '`', OBJECT_NAME, '` (', INDEX_COLS, ' )' SEPARATOR "," ) INDEX_DEF
FROM DB_COMPARE I
LEFT JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND TC.CONSTRAINT_NAME = I.OBJECT_NAME
SELECT TABLE_SCHEMA
,TABLE_NAME
,GROUP_CONCAT(CHECK_DEF
SEPARATOR ",") CHECK_DEF
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT('
CONSTRAINT `', TC.CONSTRAINT_NAME, '` CHECK (', CHK.CHECK_CLAUSE, ')' SEPARATOR
"," ) CHECK_DEF
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'CHECK'
INNER JOIN
INFORMATION_SCHEMA.CHECK_CONSTRAINTS CHK ON TC.TABLE_SCHEMA = CHK.CONSTRAINT_SCHEMA
AND TC.CONSTRAINT_NAME = CHK.CONSTRAINT_NAME
GROUP BY TC.TABLE_SCHEMA,
TC.TABLE_NAME
)CHK
SELECT TABLE_SCHEMA
,TABLE_NAME
,GROUP_CONCAT(FKEY_DEF
SEPARATOR "," ) FKEY_DEF
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,CONCAT('
CONSTRAINT `', FKEY.CONSTRAINT_NAME, '` FOREIGN KEY (', GROUP_CONCAT( '`',
FKEY.COLUMN_NAME , '`' ORDER BY FKEY.ORDINAL_POSITION SEPARATOR ","), ') REFERENCES
', '`', FKEY.REFERENCED_TABLE_NAME, '`(', GROUP_CONCAT( '`',
FKEY.REFERENCED_COLUMN_NAME , '`' ORDER BY FKEY.ORDINAL_POSITION SEPARATOR ",") ,
')'
, CASE
WHEN MAX(RC.UPDATE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON UPDATE ',
MAX(RC.UPDATE_RULE)),'') END
, CASE
WHEN MAX(RC.DELETE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON DELETE ',
MAX(RC.DELETE_RULE)),'') END ) FKEY_DEF
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'FOREIGN KEY'
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE FKEY ON TC.TABLE_SCHEMA =
FKEY.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = FKEY.CONSTRAINT_NAME
GROUP BY TC.TABLE_SCHEMA,
TC.TABLE_NAME, FKEY.CONSTRAINT_NAME, FKEY.REFERENCED_TABLE_NAME
) FKEY
) A
UNION ALL
')
FROM DB_COMPARE S
UNION ALL
-- Generate script for missing columns, index and other constraints in Source
SELECT
') TABLE_DEFINITION
ELSE
CONCAT(' GENERATED ALWAYS AS (',
GENERATION_EXPRESSION, ') ', CASE EXTRA COLLATE utf8_unicode_ci WHEN 'STORED
GENERATED' THEN ' STORED ' WHEN 'VIRTUAL GENERATED' THEN ' VIRTUAL ' ELSE '' END)
END
,S.DATABASE_NAME
,S.TABLE_NAME
FROM DB_COMPARE S
,I.TABLE_NAME
FROM DB_COMPARE I
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT(' ADD
CONSTRAINT `', TC.CONSTRAINT_NAME, '` CHECK (', CHK.CHECK_CLAUSE, ')' SEPARATOR
"," ) CHECK_DEF
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'CHECK'
INNER JOIN
INFORMATION_SCHEMA.CHECK_CONSTRAINTS CHK ON TC.TABLE_SCHEMA = CHK.CONSTRAINT_SCHEMA
AND TC.CONSTRAINT_NAME = CHK.CONSTRAINT_NAME
)CHK
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
, CASE WHEN
MAX(RC.UPDATE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON UPDATE ',
MAX(RC.UPDATE_RULE)),'') END
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'FOREIGN KEY'
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE FKEY ON TC.TABLE_SCHEMA =
FKEY.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = FKEY.CONSTRAINT_NAME
) FKEY
UNION ALL
SELECT
') TABLE_DEFINITION
ELSE
END
,S.DATABASE_NAME
,S.TABLE_NAME
FROM DB_COMPARE S
,I.TABLE_NAME
FROM DB_COMPARE I
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT(' DROP
CONSTRAINT `', TC.CONSTRAINT_NAME, '`, ',
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'CHECK'
INNER JOIN
INFORMATION_SCHEMA.CHECK_CONSTRAINTS CHK ON TC.TABLE_SCHEMA = CHK.CONSTRAINT_SCHEMA
AND TC.CONSTRAINT_NAME = CHK.CONSTRAINT_NAME
)CHK
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
, CASE WHEN
MAX(RC.UPDATE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON UPDATE ',
MAX(RC.UPDATE_RULE),'')) END
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'FOREIGN KEY'
INNER JOIN
INFORMATION_SCHEMA.KEY_COLUMN_USAGE FKEY ON TC.TABLE_SCHEMA =
FKEY.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = FKEY.CONSTRAINT_NAME
) FKEY
UNION ALL
-- Drop the index, connstraints and columnns which are existing onny in destination
SELECT
SUBSTRING(CONCAT(COALESCE(CONCAT(",",MAX(C.COL_DEF)),''),
COALESCE(CONCAT(",",MAX(I.INDEX_DEF)),''),COALESCE(CONCAT(",",MAX(CHK.CHECK_DEF)),
'')),2) ,';') TABLE_DEFINITION
FROM (
FROM DB_COMPARE S
) S
,S.DATABASE_NAME
,S.TABLE_NAME
FROM DB_COMPARE S
,I.TABLE_NAME
FROM DB_COMPARE I
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT('DROP
CONSTRAINT `', TC.CONSTRAINT_NAME, '`, ' SEPARATOR "," ) CHECK_DEF
FROM DB_COMPARE I
INNER JOIN
INFORMATION_SCHEMA.TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA = I.DATABASE_NAME AND
TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE IN ('CHECK', 'FOREIGN KEY')
)CHK
END //
DELIMITER ;
DELIMITER //
BEGIN
,ISMISSING BIT
);
FROM `tables_backup`.information_schema_tables S
FROM `tables_backup`.information_schema_tables S
-- Gets the columns, which are not part of any missing table, exist in source
FROM `tables_backup`.INFORMATION_SCHEMA_COLUMNS S
-- Gets the columns, which are not part of any missing table, exist in destination
FROM `tables_backup`.INFORMATION_SCHEMA_COLUMNS S
FROM `tables_backup`.INFORMATION_SCHEMA_COLUMNS S
INNER JOIN `tables_backup`.INFORMATION_SCHEMA_COLUMNS D ON D.TABLE_SCHEMA =
@DESTINATIONDBNAME AND S.TABLE_NAME = D.TABLE_NAME AND S.COLUMN_NAME =
D.COLUMN_NAME
AND
OR COALESCE(S.CHARACTER_SET_NAME,'') <>
COALESCE(D.CHARACTER_SET_NAME,'')
OR COALESCE(S.GENERATION_EXPRESSION,'') <>
COALESCE(D.GENERATION_EXPRESSION,'')
);
-- Gets the Indexes, which are not associated with constraints, exist only in
destination
FROM `tables_backup`.INFORMATION_SCHEMA_STATISTICS S
-- AND S.NON_UNIQUE = 1
-- Gets the Indexes, which are not associated with constraints, exist only in
source
FROM `tables_backup`.INFORMATION_SCHEMA_STATISTICS S
-- AND S.NON_UNIQUE = 1
-- Gets the Indexes, which are not associated with constraints, exist in both
databases but with difference in its properties
SELECT S.*
FROM (
FROM `tables_backup`.INFORMATION_SCHEMA_STATISTICS S
)S
INNER JOIN
,GROUP_CONCAT( "`",
COALESCE(S.COLUMN_NAME ,S.EXPRESSION ), "`", CASE WHEN S.COLLATION = 'D' THEN '
DESC ' ELSE '' END, COALESCE(CONCAT(' COMMENT', NULLIF(TRIM(S.COMMENT COLLATE
utf8_unicode_ci),'') ), '') , CASE WHEN S.IS_VISIBLE = 'NO' THEN ' INVISIBLE '
ELSE '' END ORDER BY S.SEQ_IN_INDEX ASC SEPARATOR "," ) INDEX_COLS
FROM `tables_backup`.INFORMATION_SCHEMA_STATISTICS S
) D ON S.TABLE_NAME = D.TABLE_NAME
FROM `tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS S
FROM `tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS S
FROM `tables_backup`.INFORMATION_SCHEMA_STATISTICS S
SELECT A.*
FROM (
SELECT
ELSE
END
') TABLE_DEFINITION
FROM DB_COMPARE S
,I.TABLE_NAME
,GROUP_CONCAT(CASE
CONSTRAINT_TYPE WHEN 'PRIMARY KEY' THEN 'PRIMARY' WHEN 'UNIQUE' THEN 'UNIQUE' ELSE
'' END, CASE WHEN INDEX_TYPE = 'BTREE' THEN ' KEY' ELSE CONCAT(' ', INDEX_TYPE, '
KEY ') END, '`', OBJECT_NAME, '` (', INDEX_COLS, ' )' SEPARATOR "," ) INDEX_DEF
FROM DB_COMPARE I
LEFT JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND TC.CONSTRAINT_NAME =
I.OBJECT_NAME
SELECT TABLE_SCHEMA
,TABLE_NAME
,GROUP_CONCAT(CHECK_DEF
SEPARATOR ",") CHECK_DEF
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT('
CONSTRAINT `', TC.CONSTRAINT_NAME, '` CHECK (', CHK.CHECK_CLAUSE, ')' SEPARATOR
"," ) CHECK_DEF
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'CHECK'
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_CHECK_CONSTRAINTS CHK ON TC.TABLE_SCHEMA =
CHK.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CHK.CONSTRAINT_NAME
GROUP BY TC.TABLE_SCHEMA,
TC.TABLE_NAME
)CHK
SELECT TABLE_SCHEMA
,TABLE_NAME
,GROUP_CONCAT(FKEY_DEF
SEPARATOR "," ) FKEY_DEF
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,CONCAT('
CONSTRAINT `', FKEY.CONSTRAINT_NAME, '` FOREIGN KEY (', GROUP_CONCAT( '`',
FKEY.COLUMN_NAME , '`' ORDER BY FKEY.ORDINAL_POSITION SEPARATOR ","), ') REFERENCES
', '`', FKEY.REFERENCED_TABLE_NAME, '`(', GROUP_CONCAT( '`',
FKEY.REFERENCED_COLUMN_NAME , '`' ORDER BY FKEY.ORDINAL_POSITION SEPARATOR ",") ,
')'
, CASE
WHEN MAX(RC.UPDATE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON UPDATE ',
MAX(RC.UPDATE_RULE)),'') END
, CASE
WHEN MAX(RC.DELETE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON DELETE ',
MAX(RC.DELETE_RULE)),'') END ) FKEY_DEF
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'FOREIGN
KEY'
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_KEY_COLUMN_USAGE FKEY ON TC.TABLE_SCHEMA =
FKEY.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = FKEY.CONSTRAINT_NAME
GROUP BY TC.TABLE_SCHEMA,
TC.TABLE_NAME, FKEY.CONSTRAINT_NAME, FKEY.REFERENCED_TABLE_NAME
) FKEY
) A
UNION ALL
')
FROM DB_COMPARE S
UNION ALL
-- Generate script for missing columns, index and other constraints in Source
SELECT
') TABLE_DEFINITION
ELSE
END
,S.DATABASE_NAME
,S.TABLE_NAME
FROM DB_COMPARE S
,I.TABLE_NAME
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT(' ADD
CONSTRAINT `', TC.CONSTRAINT_NAME, '` CHECK (', CHK.CHECK_CLAUSE, ')' SEPARATOR
"," ) CHECK_DEF
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'CHECK'
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_CHECK_CONSTRAINTS CHK ON TC.TABLE_SCHEMA =
CHK.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CHK.CONSTRAINT_NAME
)CHK
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
, CASE WHEN
MAX(RC.UPDATE_RULE) = 'NO ACTION' THEN '' ELSE COALESCE(CONCAT(' ON UPDATE ',
MAX(RC.UPDATE_RULE)),'') END
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'FOREIGN
KEY'
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_KEY_COLUMN_USAGE FKEY ON TC.TABLE_SCHEMA =
FKEY.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = FKEY.CONSTRAINT_NAME
) FKEY
UNION ALL
SELECT
') TABLE_DEFINITION
ELSE
END
,S.DATABASE_NAME
,S.TABLE_NAME
FROM DB_COMPARE S
,I.TABLE_NAME
FROM DB_COMPARE I
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT(' DROP
CONSTRAINT `', TC.CONSTRAINT_NAME, '`, ',
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'CHECK'
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_CHECK_CONSTRAINTS CHK ON TC.TABLE_SCHEMA =
CHK.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = CHK.CONSTRAINT_NAME
)CHK
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE = 'FOREIGN
KEY'
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_KEY_COLUMN_USAGE FKEY ON TC.TABLE_SCHEMA =
FKEY.CONSTRAINT_SCHEMA AND TC.CONSTRAINT_NAME = FKEY.CONSTRAINT_NAME
) FKEY
UNION ALL
-- Drop the index, connstraints and columnns which are existing onny in destination
SELECT
SUBSTRING(CONCAT(COALESCE(CONCAT(",",MAX(C.COL_DEF)),''),
COALESCE(CONCAT(",",MAX(I.INDEX_DEF)),''),COALESCE(CONCAT(",",MAX(CHK.CHECK_DEF)),
'')),2) ,';') TABLE_DEFINITION
FROM (
FROM DB_COMPARE S
) S
,S.DATABASE_NAME
,S.TABLE_NAME
FROM DB_COMPARE S
,I.TABLE_NAME
FROM DB_COMPARE I
SELECT TABLE_SCHEMA
,TABLE_NAME
FROM (
SELECT TC.TABLE_SCHEMA
,TC.TABLE_NAME
,GROUP_CONCAT('DROP
CONSTRAINT `', TC.CONSTRAINT_NAME, '`, ' SEPARATOR "," ) CHECK_DEF
FROM DB_COMPARE I
INNER JOIN
`tables_backup`.INFORMATION_SCHEMA_TABLE_CONSTRAINTS TC ON TC.TABLE_SCHEMA =
I.DATABASE_NAME AND TC.TABLE_NAME = I.TABLE_NAME AND CONSTRAINT_TYPE IN ('CHECK',
'FOREIGN KEY')
)CHK
END //
DELIMITER ;
DROP PROCEDURE IF EXISTS SP_DBSCHEMACOMPARE_COPY_SYSTEM_DATA;
DELIMITER //
BEGIN
ELSE
END IF;
ELSE
END IF;
IF EXISTS ( SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME =
'information_schema_statistics' LIMIT 1) THEN
ELSE
END IF;
ELSE
END IF;
ELSE
CREATE TABLE `tables_backup`.`information_schema_check_constraints` AS
SELECT * FROM INFORMATION_SCHEMA.CHECK_CONSTRAINTS WHERE CONSTRAINT_SCHEMA =
@SOURCEDBNAME;
END IF;
ELSE
END IF;
DELETE FROM
`tables_backup`.`information_schema_referential_constraints` WHERE
CONSTRAINT_SCHEMA = @SOURCEDBNAME;
INSERT INTO
`tables_backup`.`information_schema_referential_constraints` SELECT * FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA =
@SOURCEDBNAME;
ELSE
CREATE TABLE
`tables_backup`.`information_schema_referential_constraints` AS SELECT * FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA =
@SOURCEDBNAME;
END IF;
END //
DELIMITER ;
DELIMITER //
BEGIN
DELETE FROM
`tables_backup`.`information_schema_referential_constraints` WHERE
CONSTRAINT_SCHEMA = SOURCEDBNAME;
INSERT INTO
`tables_backup`.`information_schema_referential_constraints` SELECT * FROM
INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS WHERE CONSTRAINT_SCHEMA = SOURCEDBNAME;
END //
DELIMITER ;