mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-04-22 02:32:50 +08:00
- 修复 CodeFirst + AsTable + 自动迁移,导致索性名重复的问题 #366;
This commit is contained in:
parent
9c3b5b15c4
commit
8c38922331
@ -238,6 +238,7 @@ namespace FreeSql.Tests.MySqlConnector
|
|||||||
{
|
{
|
||||||
var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.mysql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("uk_phone", "phone", true)]
|
||||||
|
@ -134,11 +134,12 @@ namespace FreeSql.Tests.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.dameng.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInf1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInf", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group, index22", true)]
|
[Index("{tablename}_uk_group_index22", "group, index22", true)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -134,11 +134,12 @@ namespace FreeSql.Tests.Odbc.KingbaseES
|
|||||||
{
|
{
|
||||||
var sql = g.kingbaseES.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.kingbaseES.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.kingbaseES.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.kingbaseES.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.kingbaseES.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group, index22", true)]
|
[Index("{tablename}_uk_group_index22", "group, index22", true)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -109,6 +109,7 @@ namespace FreeSql.Tests.Odbc.MySql
|
|||||||
{
|
{
|
||||||
var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.mysql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("uk_phone", "phone", true)]
|
||||||
|
@ -85,11 +85,12 @@ namespace FreeSql.Tests.Odbc.PostgreSQL
|
|||||||
{
|
{
|
||||||
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.pgsql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group, index22", true)]
|
[Index("{tablename}_uk_group_index22", "group, index22", true)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -118,6 +118,7 @@ namespace FreeSql.Tests.Odbc.SqlServer
|
|||||||
{
|
{
|
||||||
var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.sqlserver.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("uk_phone", "phone", true)]
|
||||||
|
@ -204,11 +204,12 @@ namespace FreeSql.Tests.Dameng
|
|||||||
{
|
{
|
||||||
var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.dameng.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.dameng.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.dameng.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInf1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInf", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group, index22", true)]
|
[Index("{tablename}_uk_group_index22", "group, index22", true)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -237,6 +237,7 @@ namespace FreeSql.Tests.MySql
|
|||||||
{
|
{
|
||||||
var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.mysql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.mysql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.mysql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("uk_phone", "phone", true)]
|
||||||
|
@ -234,6 +234,7 @@ namespace FreeSql.Tests.Oracle
|
|||||||
{
|
{
|
||||||
var sql = g.oracle.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.oracle.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.oracle.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.oracle.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
//g.oracle.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("uk_phone", "phone", true)]
|
||||||
|
@ -125,11 +125,12 @@ namespace FreeSql.Tests.PostgreSQL
|
|||||||
{
|
{
|
||||||
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.pgsql.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.pgsql.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.pgsql.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group, index22", false)]
|
[Index("{tablename}_uk_group_index22", "group, index22", false)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -90,11 +90,12 @@ namespace FreeSql.Tests.ShenTong
|
|||||||
{
|
{
|
||||||
var sql = g.shentong.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.shentong.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.shentong.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.shentong.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.shentong.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group, index22", false)]
|
[Index("{tablename}_uk_group_index22", "group, index22", false)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -154,6 +154,7 @@ namespace FreeSql.Tests.SqlServer
|
|||||||
{
|
{
|
||||||
var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.sqlserver.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.sqlserver.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.sqlserver.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
[Table(Name = "AddUniquesInfo", OldName = "AddUniquesInfo2")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("uk_phone", "phone", true)]
|
||||||
|
@ -146,11 +146,12 @@ namespace FreeSql.Tests.Sqlite
|
|||||||
{
|
{
|
||||||
var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
var sql = g.sqlite.CodeFirst.GetComparisonDDLStatements<AddUniquesInfo>();
|
||||||
g.sqlite.CodeFirst.SyncStructure<AddUniquesInfo>();
|
g.sqlite.CodeFirst.SyncStructure<AddUniquesInfo>();
|
||||||
|
g.sqlite.CodeFirst.SyncStructure(typeof(AddUniquesInfo), "AddUniquesInfo1");
|
||||||
}
|
}
|
||||||
[Table(Name = "AddUniquesInfo2", OldName = "AddUniquesInfo")]
|
[Table(Name = "AddUniquesInfo2", OldName = "AddUniquesInfo")]
|
||||||
[Index("uk_phone", "phone", true)]
|
[Index("{tablename}_uk_phone", "phone", true)]
|
||||||
[Index("uk_group_index", "group,index", true)]
|
[Index("{tablename}_uk_group_index", "group,index", true)]
|
||||||
[Index("uk_group_index22", "group desc, index22", true)]
|
[Index("{tablename}_uk_group_index22", "group desc, index22", true)]
|
||||||
class AddUniquesInfo
|
class AddUniquesInfo
|
||||||
{
|
{
|
||||||
public Guid id { get; set; }
|
public Guid id { get; set; }
|
||||||
|
@ -4,14 +4,28 @@ using System.Text;
|
|||||||
|
|
||||||
namespace FreeSql.DataAnnotations
|
namespace FreeSql.DataAnnotations
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 索引设置,如:[Index("{tablename}_idx_01", "name")]
|
||||||
|
/// </summary>
|
||||||
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]
|
||||||
public class IndexAttribute : Attribute
|
public class IndexAttribute : Attribute
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// 索引设置,如:[Index("{tablename}_idx_01", "name")]
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
|
||||||
|
/// <param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
|
||||||
public IndexAttribute(string name, string fields)
|
public IndexAttribute(string name, string fields)
|
||||||
{
|
{
|
||||||
this.Name = name;
|
this.Name = name;
|
||||||
this.Fields = fields;
|
this.Fields = fields;
|
||||||
}
|
}
|
||||||
|
/// <summary>
|
||||||
|
/// 索引设置,如:[Index("{tablename}_idx_01", "name", true)]
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
|
||||||
|
/// <param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
|
||||||
|
/// <param name="isUnique">是否唯一</param>
|
||||||
public IndexAttribute(string name, string fields, bool isUnique)
|
public IndexAttribute(string name, string fields, bool isUnique)
|
||||||
{
|
{
|
||||||
this.Name = name;
|
this.Name = name;
|
||||||
@ -19,7 +33,8 @@ namespace FreeSql.DataAnnotations
|
|||||||
this.IsUnique = isUnique;
|
this.IsUnique = isUnique;
|
||||||
}
|
}
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 索引名
|
/// 索引名<para></para>
|
||||||
|
/// v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string Name { get; set; }
|
public string Name { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -274,9 +274,30 @@
|
|||||||
<param name="exp"></param>
|
<param name="exp"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:FreeSql.DataAnnotations.IndexAttribute">
|
||||||
|
<summary>
|
||||||
|
索引设置,如:[Index("{tablename}_idx_01", "name")]
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.DataAnnotations.IndexAttribute.#ctor(System.String,System.String)">
|
||||||
|
<summary>
|
||||||
|
索引设置,如:[Index("{tablename}_idx_01", "name")]
|
||||||
|
</summary>
|
||||||
|
<param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
|
||||||
|
<param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
|
||||||
|
</member>
|
||||||
|
<member name="M:FreeSql.DataAnnotations.IndexAttribute.#ctor(System.String,System.String,System.Boolean)">
|
||||||
|
<summary>
|
||||||
|
索引设置,如:[Index("{tablename}_idx_01", "name", true)]
|
||||||
|
</summary>
|
||||||
|
<param name="name">索引名<para></para>v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)</param>
|
||||||
|
<param name="fields">索引字段,为属性名以逗号分隔,如:Create_time ASC, Title ASC</param>
|
||||||
|
<param name="isUnique">是否唯一</param>
|
||||||
|
</member>
|
||||||
<member name="P:FreeSql.DataAnnotations.IndexAttribute.Name">
|
<member name="P:FreeSql.DataAnnotations.IndexAttribute.Name">
|
||||||
<summary>
|
<summary>
|
||||||
索引名
|
索引名<para></para>
|
||||||
|
v1.7.0 增加占位符 {TableName} 表名区分索引名 (解决 AsTable 分表 CodeFirst 导致索引名重复的问题)
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="P:FreeSql.DataAnnotations.IndexAttribute.Fields">
|
<member name="P:FreeSql.DataAnnotations.IndexAttribute.Fields">
|
||||||
|
@ -9,6 +9,7 @@ using System.Data.Common;
|
|||||||
using System.Linq;
|
using System.Linq;
|
||||||
using System.Linq.Expressions;
|
using System.Linq.Expressions;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
using System.Text.RegularExpressions;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace FreeSql.Internal.CommonProvider
|
namespace FreeSql.Internal.CommonProvider
|
||||||
@ -124,5 +125,7 @@ namespace FreeSql.Internal.CommonProvider
|
|||||||
}
|
}
|
||||||
|
|
||||||
public virtual int ExecuteDDLStatements(string ddl) => _orm.Ado.ExecuteNonQuery(CommandType.Text, ddl);
|
public virtual int ExecuteDDLStatements(string ddl) => _orm.Ado.ExecuteNonQuery(CommandType.Text, ddl);
|
||||||
|
|
||||||
|
public static string ReplaceIndexName(string indexName, string tbname) => string.IsNullOrEmpty(indexName) ? indexName : Regex.Replace(indexName, @"\{\s*TableName\s*\}", tbname, RegexOptions.IgnoreCase);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -149,7 +149,7 @@ namespace FreeSql.Dameng
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -282,13 +282,14 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append("';\r\n");
|
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append("';\r\n");
|
||||||
sbalter.Append("execute immediate 'CREATE ");
|
sbalter.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -373,7 +374,7 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -139,13 +139,14 @@ namespace FreeSql.MsAccess
|
|||||||
};
|
};
|
||||||
Action<string> createTableIndex = tn =>
|
Action<string> createTableIndex = tn =>
|
||||||
{
|
{
|
||||||
|
var oldtn = tn;
|
||||||
tn = _commonUtils.QuoteSqlName(tn);
|
tn = _commonUtils.QuoteSqlName(tn);
|
||||||
//创建表的索引
|
//创建表的索引
|
||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tn).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, oldtn))).Append(" ON ").Append(tn).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -379,7 +380,8 @@ namespace FreeSql.MsAccess
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
istmpatler = true;
|
istmpatler = true;
|
||||||
}
|
}
|
||||||
|
@ -167,7 +167,7 @@ namespace FreeSql.MySql
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -282,13 +282,14 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -364,7 +365,7 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -150,7 +150,7 @@ namespace FreeSql.Odbc.Dameng
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -283,13 +283,14 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append("';\r\n");
|
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append("';\r\n");
|
||||||
sbalter.Append("execute immediate 'CREATE ");
|
sbalter.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -374,7 +375,7 @@ and not exists(select 1 from all_constraints where index_name = a.index_name and
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -138,7 +138,7 @@ namespace FreeSql.Odbc.KingbaseES
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -272,13 +272,14 @@ where ns.nspname in ({0}) and d.relname in ({1}) and a.indisprimary = 'f'", tbol
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -368,7 +369,7 @@ where sys_namespace.nspname={0} and sys_class.relname={1} and sys_constraint.con
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -160,7 +160,7 @@ namespace FreeSql.Odbc.MySql
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -275,13 +275,14 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[0], tbname[1])).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -357,7 +358,7 @@ where a.table_schema IN ({0}) and a.table_name IN ({1}) and a.index_name <> 'PRI
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -150,7 +150,7 @@ namespace FreeSql.Odbc.Oracle
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -281,13 +281,14 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append("';\r\n");
|
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append("';\r\n");
|
||||||
sbalter.Append("execute immediate 'CREATE ");
|
sbalter.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -370,7 +371,7 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -150,7 +150,7 @@ namespace FreeSql.Odbc.PostgreSQL
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -284,13 +284,14 @@ where ns.nspname in ({{0}}) and d.relname in ({{1}}) and a.indisprimary = 'f'",
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && ((a[2] == "1") == b.IsDesc || is96 == false)).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && ((a[2] == "1") == b.IsDesc || is96 == false)).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -380,7 +381,7 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -230,7 +230,7 @@ ELSE
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -342,13 +342,14 @@ use [" + database + "];", tboldname ?? tbname);
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -450,7 +451,7 @@ use [" + database + "];", tboldname ?? tbname);
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -151,7 +151,7 @@ namespace FreeSql.Oracle
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -282,13 +282,14 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append("';\r\n");
|
if (dsukfind1.Any()) sbalter.Append("execute immediate 'DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append("';\r\n");
|
||||||
sbalter.Append("execute immediate 'CREATE ");
|
sbalter.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -371,7 +372,7 @@ and not exists(select 1 from all_constraints where constraint_name = a.index_nam
|
|||||||
{
|
{
|
||||||
sb.Append("execute immediate 'CREATE ");
|
sb.Append("execute immediate 'CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -185,7 +185,7 @@ namespace FreeSql.PostgreSQL
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -319,13 +319,14 @@ where ns.nspname in ({{0}}) and d.relname in ({{1}}) and a.indisprimary = 'f'",
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && ((a[2] == "1") == b.IsDesc || is96 == false)).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && ((a[2] == "1") == b.IsDesc || is96 == false)).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -415,7 +416,7 @@ where pg_namespace.nspname={0} and pg_class.relname={1} and pg_constraint.contyp
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -150,7 +150,7 @@ namespace FreeSql.ShenTong
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -285,13 +285,14 @@ where ns.nspname in ({0}) and d.relname in ({1}) and a.indisprimary = 'f'", tbol
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => uk.Columns.Where(b => (a[3] == "1") == uk.IsUnique && string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName($"{tbname[0]}.{tbname[1]}")).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -381,7 +382,7 @@ where sys_namespace.nspname={0} and sys_class.relname={1} and sys_constraint.con
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -229,7 +229,7 @@ ELSE
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(createTableName).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[2]))).Append(" ON ").Append(createTableName).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -341,13 +341,14 @@ use [" + database + "];", tboldname ?? tbname);
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[2]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
{
|
{
|
||||||
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
|
if (dsukfind1.Any()) sbalter.Append("DROP INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append(";\r\n");
|
||||||
sbalter.Append("CREATE ");
|
sbalter.Append("CREATE ");
|
||||||
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
if (uk.IsUnique) sbalter.Append("UNIQUE ");
|
||||||
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
|
sbalter.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ukname)).Append(" ON ").Append(_commonUtils.QuoteSqlName(tbname[1], tbname[2])).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sbalter.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -449,7 +450,7 @@ use [" + database + "];", tboldname ?? tbname);
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tablename).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[2]))).Append(" ON ").Append(tablename).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
@ -135,7 +135,7 @@ namespace FreeSql.Sqlite
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON ").Append(tbname[1]).Append("(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON ").Append(tbname[1]).Append("(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
@ -223,7 +223,8 @@ namespace FreeSql.Sqlite
|
|||||||
foreach (var uk in tb.Indexes)
|
foreach (var uk in tb.Indexes)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
if (string.IsNullOrEmpty(uk.Name) || uk.Columns.Any() == false) continue;
|
||||||
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], uk.Name, true) == 0).ToArray();
|
var ukname = ReplaceIndexName(uk.Name, tbname[1]);
|
||||||
|
var dsukfind1 = dsuk.Where(a => string.Compare(a[1], ukname, true) == 0).ToArray();
|
||||||
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
if (dsukfind1.Any() == false || dsukfind1.Length != uk.Columns.Length || dsukfind1.Where(a => (a[3] == "1") == uk.IsUnique && uk.Columns.Where(b => string.Compare(b.Column.Attribute.Name, a[0], true) == 0 && (a[2] == "1") == b.IsDesc).Any()).Count() != uk.Columns.Length)
|
||||||
istmpatler = true;
|
istmpatler = true;
|
||||||
}
|
}
|
||||||
@ -290,7 +291,7 @@ namespace FreeSql.Sqlite
|
|||||||
{
|
{
|
||||||
sb.Append("CREATE ");
|
sb.Append("CREATE ");
|
||||||
if (uk.IsUnique) sb.Append("UNIQUE ");
|
if (uk.IsUnique) sb.Append("UNIQUE ");
|
||||||
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(uk.Name)).Append(" ON \"").Append(tablenameOnlyTb).Append("\"(");
|
sb.Append("INDEX ").Append(_commonUtils.QuoteSqlName(ReplaceIndexName(uk.Name, tbname[1]))).Append(" ON \"").Append(tablenameOnlyTb).Append("\"(");
|
||||||
foreach (var tbcol in uk.Columns)
|
foreach (var tbcol in uk.Columns)
|
||||||
{
|
{
|
||||||
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
sb.Append(_commonUtils.QuoteSqlName(tbcol.Column.Attribute.Name));
|
||||||
|
Loading…
x
Reference in New Issue
Block a user