protected override string WriteDataType(DatabaseColumn column) { var type = new DataTypeWriter().WriteDataType(column); if (column.IsPrimaryKey && (Table.PrimaryKey == null || Table.PrimaryKey.Columns.Count == 1)) { type += " PRIMARY KEY"; if (column.IsAutoNumber) //must be integer primary key { return("INTEGER PRIMARY KEY AUTOINCREMENT"); } } if (!column.Nullable) { type += " NOT NULL"; } //if there's a default value, and it's not a guid generator or autonumber if (!string.IsNullOrEmpty(column.DefaultValue) && !SqlTranslator.IsGuidGenerator(column.DefaultValue) && !column.IsAutoNumber) { var value = SqlTranslator.Fix(column.DefaultValue); //SqlServer (N'string') format if (value.StartsWith("(N'", StringComparison.OrdinalIgnoreCase)) { value = value.Replace("(N'", "('"); } type += " DEFAULT " + value; } return(type); }
protected override string WriteDataType(DatabaseColumn column) { var type = new DataTypeWriter().WriteDataType(column); if (column.IsPrimaryKey && (Table.PrimaryKey == null || Table.PrimaryKey.Columns.Count == 1)) { type += " PRIMARY KEY"; if (column.IsIdentity) { type += " AUTOINCREMENT"; } } if (!column.Nullable) { type += " NOT NULL"; } //if there's a default value, and it's not a guid generator if (!string.IsNullOrEmpty(column.DefaultValue) && !SqlTranslator.IsGuidGenerator(column.DefaultValue)) { var value = SqlTranslator.Fix(column.DefaultValue); type += " DEFAULT " + value; } return(type); }
protected virtual string FixDefaultValue(string defaultValue) { if (SqlTranslator.IsGuidGenerator(defaultValue) && !"newsequentialid()".Equals(defaultValue, StringComparison.OrdinalIgnoreCase)) { return("newid()"); } return(SqlTranslator.Fix(defaultValue)); }
private static string FixDefaultValue(string defaultValue) { //Guid defaults. if (SqlTranslator.IsGuidGenerator(defaultValue)) { return("uuid_generate_v1()"); //use uuid-osp contrib } return(SqlTranslator.Fix(defaultValue)); }
private static string FixDefaultValue(DatabaseColumn column) { //Guid defaults. if (SqlTranslator.IsGuidGenerator(column.DefaultValue)) { return("SYS_GUID()"); } return(SqlTranslator.Fix(column.DefaultValue)); }
private static string FixDefaultValue(string defaultValue) { //Guid defaults. if (SqlTranslator.IsGuidGenerator(defaultValue)) { return("UUID()"); } return(SqlTranslator.Fix(defaultValue)); }
private static string TranslateCheckExpression(string expression) { expression = SqlTranslator.Fix(expression); //translate SqlServer-isms into MySql return(expression //column escaping .Replace("[", "`") .Replace("]", "`")); }
private static string FixDefaultValue(string defaultValue) { //Guid defaults. if (SqlTranslator.IsGuidGenerator(defaultValue)) { return(null); //there is no native guid (uuid) generator in DB2 } return(SqlTranslator.Fix(defaultValue)); }
private static string TranslateCheckExpression(string expression) { expression = SqlTranslator.Fix(expression); return(expression //column escaping .Replace("[", "\"") .Replace("]", "\"") //MySql column escaping .Replace("`", "\"") .Replace("`", "\"")); }
private static string FixDefaultValue(DatabaseColumn column) { //Guid defaults. if (SqlTranslator.IsGuidGenerator(column.DefaultValue)) { return("SYS_GUID()"); } //standard oracle shouldn't be translated foreach (var s in OracleFunctions) { if (string.Equals(column.DefaultValue, s, StringComparison.OrdinalIgnoreCase)) { return(column.DefaultValue); } } return(SqlTranslator.Fix(column.DefaultValue)); }
protected override void AddTableConstraints(IList <string> columnList) { var formatter = SqlFormatProvider(); if (Table.PrimaryKey != null && Table.PrimaryKey.Columns.Count > 1) { columnList.Add("PRIMARY KEY (" + GetColumnList(Table.PrimaryKey.Columns) + ")"); } foreach (var uniqueKey in Table.UniqueKeys) { columnList.Add("UNIQUE (" + GetColumnList(uniqueKey.Columns) + ")"); } foreach (var checkConstraint in Table.CheckConstraints) { var expression = SqlTranslator.Fix(checkConstraint.Expression); //nothing to write? if (string.IsNullOrEmpty(expression)) { continue; } //check if Access and reformat if (checkConstraint.Name.Contains("].")) { //access format names [table].[column].ValidationRule //access expression doesn't have column name so take it from constraint name var columnName = checkConstraint.Name.Substring(0, checkConstraint.Name.LastIndexOf("].", System.StringComparison.Ordinal) + 1) .Replace("[" + Table.Name + "].", ""); //must have braces expression = "(" + columnName + " " + expression + ")"; } columnList.Add("CHECK " + expression); } //http://www.sqlite.org/foreignkeys.html These aren't enabled by default. foreach (var foreignKey in Table.ForeignKeys) { var referencedTable = foreignKey.ReferencedTable(Table.DatabaseSchema); //can't find the table. Don't write the fk reference. if (referencedTable == null) { continue; } string refColumnList; if (referencedTable.PrimaryKey == null && referencedTable.PrimaryKeyColumn != null) { refColumnList = referencedTable.PrimaryKeyColumn.Name; } else if (referencedTable.PrimaryKey == null) { continue; //can't find the primary key } else { refColumnList = GetColumnList(referencedTable.PrimaryKey.Columns); } columnList.Add(string.Format(CultureInfo.InvariantCulture, "FOREIGN KEY ({0}) REFERENCES {1} ({2})", GetColumnList(foreignKey.Columns), formatter.Escape(foreignKey.RefersToTable), refColumnList)); } }