【发布时间】:2019-12-16 04:59:10
【问题描述】:
我正在做一个项目,我当前的开发环境基于 MySQL,而生产环境可能是 MySQL 或 Microsoft SQL Server。我试图确保我为构建数据库表而编写的 SQL 将是跨平台的。
我已经发现 ZEROFILL 属性是非标准的,所以我假设它在 MySQL 之外不可用。
CREATE TABLE
`scfe`.`tbl_UserRoles` (
`UserRoleRecID` INT(7) UNSIGNED NOT NULL AUTO_INCREMENT COMMENT 'User Role Rec ID' ,
`UserADID` CHAR(50) NOT NULL COMMENT 'User ADID FK - tbl_Users.UserADID' ,
`UserRole` CHAR(150) NOT NULL COMMENT 'User Role FK - systbl_SYS_Roles.UserRoleID' ,
`Status` ENUM('A','I') NOT NULL DEFAULT 'I' COMMENT 'User Role Status - A = Active, I = Inactive // Default = I' ,
`RoleDateAdded` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ,
`RoleDateModified` DATETIME on update CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
PRIMARY KEY (`UserRoleRecID`),
INDEX `Index_UserADID` (`UserADID`),
INDEX `Index_UserRole` (`UserRole`),
INDEX `Index_RoleStatus` (`Status`))
ENGINE = MyISAM;
由于我想确保代码能够在系统之间轻松转换,是否还有其他功能/选项不能跨平台(例如,基于上面的代码,是否有默认的CURRENT_TIMESTAMP?更新有没有应该使用的替代品?
我知道引擎行不需要在 MySQL 之外使用。
【问题讨论】:
-
@a_horse_with_no_name 你能推荐一个在两者之间转换的工具或参考。如前所述,由于我不知道最终的目标平台,我试图不使用平台相关的功能。