mirror of
https://github.com/mdbtools/mdbtools.git
synced 2025-09-20 11:07:53 +08:00
@@ -121,6 +121,10 @@ static const MdbBackendType mdb_mysql_types[] = {
|
|||||||
};
|
};
|
||||||
static const MdbBackendType mdb_mysql_shortdate_type =
|
static const MdbBackendType mdb_mysql_shortdate_type =
|
||||||
{ .name = "date" };
|
{ .name = "date" };
|
||||||
|
/* We can't use the MySQL SERIAL type because that uses a bigint which
|
||||||
|
* is 64 bits wide, whereas MDB long ints are 32 bits */
|
||||||
|
static const MdbBackendType mdb_mysql_serial_type =
|
||||||
|
{ .name = "int not null auto_increment unique" };
|
||||||
|
|
||||||
/* sqlite data types */
|
/* sqlite data types */
|
||||||
static const MdbBackendType mdb_sqlite_types[] = {
|
static const MdbBackendType mdb_sqlite_types[] = {
|
||||||
@@ -349,8 +353,8 @@ void mdb_init_backends(MdbHandle *mdb)
|
|||||||
NULL,
|
NULL,
|
||||||
quote_schema_name_dquote);
|
quote_schema_name_dquote);
|
||||||
mdb_register_backend(mdb, "mysql",
|
mdb_register_backend(mdb, "mysql",
|
||||||
MDB_SHEXP_DROPTABLE|MDB_SHEXP_CST_NOTNULL|MDB_SHEXP_CST_NOTEMPTY|MDB_SHEXP_INDEXES|MDB_SHEXP_DEFVALUES|MDB_SHEXP_BULK_INSERT,
|
MDB_SHEXP_DROPTABLE|MDB_SHEXP_CST_NOTNULL|MDB_SHEXP_CST_NOTEMPTY|MDB_SHEXP_INDEXES|MDB_SHEXP_RELATIONS|MDB_SHEXP_DEFVALUES|MDB_SHEXP_BULK_INSERT,
|
||||||
mdb_mysql_types, &mdb_mysql_shortdate_type, NULL,
|
mdb_mysql_types, &mdb_mysql_shortdate_type, &mdb_mysql_serial_type,
|
||||||
"current_date", "now()",
|
"current_date", "now()",
|
||||||
"%Y-%m-%d %H:%M:%S",
|
"%Y-%m-%d %H:%M:%S",
|
||||||
"%Y-%m-%d",
|
"%Y-%m-%d",
|
||||||
@@ -642,6 +646,8 @@ mdb_get_relationships(MdbHandle *mdb, const gchar *dbnamespace, const char* tabl
|
|||||||
backend = MDB_BACKEND_ORACLE;
|
backend = MDB_BACKEND_ORACLE;
|
||||||
} else if (!strcmp(mdb->backend_name, "postgres")) {
|
} else if (!strcmp(mdb->backend_name, "postgres")) {
|
||||||
backend = MDB_BACKEND_POSTGRES;
|
backend = MDB_BACKEND_POSTGRES;
|
||||||
|
} else if (!strcmp(mdb->backend_name, "mysql")) {
|
||||||
|
backend = MDB_BACKEND_MYSQL;
|
||||||
} else if (!mdb->relationships_table) {
|
} else if (!mdb->relationships_table) {
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
@@ -731,6 +737,16 @@ mdb_get_relationships(MdbHandle *mdb, const gchar *dbnamespace, const char* tabl
|
|||||||
";\n", NULL);
|
";\n", NULL);
|
||||||
|
|
||||||
break;
|
break;
|
||||||
|
case MDB_BACKEND_MYSQL:
|
||||||
|
text = g_strconcat(
|
||||||
|
"ALTER TABLE ", quoted_table_1,
|
||||||
|
" ADD CONSTRAINT ", quoted_constraint_name,
|
||||||
|
" FOREIGN KEY (", quoted_column_1, ")"
|
||||||
|
" REFERENCES ", quoted_table_2, "(", quoted_column_2, ")",
|
||||||
|
(grbit & 0x00000100) ? " ON UPDATE CASCADE" : "",
|
||||||
|
(grbit & 0x00001000) ? " ON DELETE CASCADE" : "",
|
||||||
|
";\n", NULL);
|
||||||
|
break;
|
||||||
case MDB_BACKEND_POSTGRES:
|
case MDB_BACKEND_POSTGRES:
|
||||||
text = g_strconcat(
|
text = g_strconcat(
|
||||||
"ALTER TABLE ", quoted_table_1,
|
"ALTER TABLE ", quoted_table_1,
|
||||||
|
Reference in New Issue
Block a user