Skip to content
This repository was archived by the owner on Dec 24, 2022. It is now read-only.

Commit d5c3b8e

Browse files
committed
Add RowVersion support for MySql
1 parent d20c1f7 commit d5c3b8e

File tree

1 file changed

+36
-1
lines changed

1 file changed

+36
-1
lines changed

src/ServiceStack.OrmLite.MySql/MySqlDialectProvider.cs

Lines changed: 36 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,36 @@ public override void OnAfterInitColumnTypeMap()
3636
DbTypeMap.Set<DateTimeOffset?>(DbType.DateTimeOffset, StringColumnDefinition);
3737
}
3838

39+
public static string RowVersionTriggerFormat = "{0}RowVersionUpdateTrigger";
40+
41+
public override string ToPostDropTableStatement(ModelDefinition modelDef)
42+
{
43+
if (modelDef.RowVersion != null)
44+
{
45+
var triggerName = RowVersionTriggerFormat.Fmt(modelDef.ModelName);
46+
return "DROP TRIGGER IF EXISTS {0}".Fmt(GetQuotedTableName(triggerName));
47+
}
48+
49+
return null;
50+
}
51+
52+
public override string ToPostCreateTableStatement(ModelDefinition modelDef)
53+
{
54+
if (modelDef.RowVersion != null)
55+
{
56+
var triggerName = RowVersionTriggerFormat.Fmt(modelDef.ModelName);
57+
var triggerBody = "SET NEW.{0} = OLD.{0} + 1;".Fmt(
58+
modelDef.RowVersion.FieldName.SqlColumn());
59+
60+
var sql = "CREATE TRIGGER {0} BEFORE UPDATE ON {1} FOR EACH ROW BEGIN {2} END;".Fmt(
61+
triggerName, modelDef.ModelName, triggerBody);
62+
63+
return sql;
64+
}
65+
66+
return null;
67+
}
68+
3969
public override string GetQuotedValue(string paramValue)
4070
{
4171
return "'" + paramValue.Replace("\\", "\\\\").Replace("'", @"\'") + "'";
@@ -175,7 +205,7 @@ public string GetColumnDefinition(FieldDefinition fieldDefinition)
175205
return sql.ToString();
176206
}
177207

178-
return base.GetColumnDefinition(
208+
var ret = base.GetColumnDefinition(
179209
fieldDefinition.FieldName,
180210
fieldDefinition.ColumnType,
181211
fieldDefinition.IsPrimaryKey,
@@ -186,6 +216,11 @@ public string GetColumnDefinition(FieldDefinition fieldDefinition)
186216
null,
187217
fieldDefinition.DefaultValue,
188218
fieldDefinition.CustomFieldDefinition);
219+
220+
if (fieldDefinition.IsRowVersion)
221+
return ret + " DEFAULT 1";
222+
223+
return ret;
189224
}
190225
}
191226
}

0 commit comments

Comments
 (0)