/// <summary> /// 新建索引。 /// </summary> /// <param name="command">当前命令。</param> /// <param name="builder">SQL语句构建实例。</param> protected override void Generate(CreateIndexCommand command, IndentedStringBuilder builder) { base.Generate(command, builder); if (command.IsUnique && command.IsCustered != true) { builder.Append(" WHERE "); for (var i = 0; i < command.Columns.Length; i++) { if (i != 0) { builder.Append(" AND "); } builder .Append(Sql.DelimitIdentifier(command.Columns[i])) .Append(" IS NOT NULL"); } } }
/// <summary> /// 新建索引。 /// </summary> /// <param name="command">当前命令。</param> /// <param name="builder">SQL语句构建实例。</param> protected virtual void Generate(CreateIndexCommand command, IndentedStringBuilder builder) { Check.NotNull(command, nameof(command)); Check.NotNull(builder, nameof(builder)); builder.Append("CREATE "); if (command.IsUnique) { builder.Append("UNIQUE "); } IndexTraits(command, builder); builder .Append("INDEX ") .Append(Sql.DelimitIdentifier(Prefix(command.Name))) .Append(" ON ") .Append(Sql.DelimitIdentifier(Prefix(command.Table), command.Schema)) .Append(" (") .Append(ColumnList(command.Columns)) .Append(")"); }