mirror of
https://github.com/nsnail/FreeSql.git
synced 2025-12-27 10:25:47 +08:00
- 优化 IUpdate 批量 case when 同值的 SQL 生成;#1393
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
using FreeSql.DataAnnotations;
|
||||
using FreeSql.DataAnnotations;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
@@ -58,10 +58,7 @@ ON DUPLICATE KEY UPDATE
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO `TestOnDuplicateKeyUpdateInfo`(`id`, `title`) VALUES(200, 'title-200'), (201, 'title-201'), (202, 'title-202')
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`title` = VALUES(`title`),
|
||||
`time` = CASE `id`
|
||||
WHEN 200 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 201 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 202 THEN '2000-01-01 00:00:00.000' END");
|
||||
`time` = '2000-01-01 00:00:00.000'");
|
||||
odku2.ExecuteAffrows();
|
||||
|
||||
|
||||
@@ -79,10 +76,7 @@ ON DUPLICATE KEY UPDATE
|
||||
}).IgnoreColumns(a => a.time).NoneParameter().OnDuplicateKeyUpdate().IgnoreColumns(a => a.title);
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO `TestOnDuplicateKeyUpdateInfo`(`id`, `title`) VALUES(200, 'title-200'), (201, 'title-201'), (202, 'title-202')
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`time` = CASE `id`
|
||||
WHEN 200 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 201 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 202 THEN '2000-01-01 00:00:00.000' END");
|
||||
`time` = '2000-01-01 00:00:00.000'");
|
||||
odku2.ExecuteAffrows();
|
||||
}
|
||||
|
||||
@@ -105,10 +99,7 @@ ON DUPLICATE KEY UPDATE
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO `TestOnDuplicateKeyUpdateInfo`(`id`, `title`) VALUES(300, 'title-300'), (301, 'title-301'), (302, 'title-302')
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`title` = VALUES(`title`),
|
||||
`time` = CASE `id`
|
||||
WHEN 300 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 301 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 302 THEN '2000-01-01 00:00:00.000' END");
|
||||
`time` = '2000-01-01 00:00:00.000'");
|
||||
odku2.ExecuteAffrows();
|
||||
|
||||
|
||||
@@ -126,10 +117,7 @@ ON DUPLICATE KEY UPDATE
|
||||
}).InsertColumns(a => a.title).NoneParameter().OnDuplicateKeyUpdate().UpdateColumns(a => a.time);
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO `TestOnDuplicateKeyUpdateInfo`(`id`, `title`) VALUES(300, 'title-300'), (301, 'title-301'), (302, 'title-302')
|
||||
ON DUPLICATE KEY UPDATE
|
||||
`time` = CASE `id`
|
||||
WHEN 300 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 301 THEN '2000-01-01 00:00:00.000'
|
||||
WHEN 302 THEN '2000-01-01 00:00:00.000' END");
|
||||
`time` = '2000-01-01 00:00:00.000'");
|
||||
odku2.ExecuteAffrows();
|
||||
}
|
||||
|
||||
|
||||
@@ -120,12 +120,7 @@ ON CONFLICT(""name"") DO UPDATE SET
|
||||
ON CONFLICT(""name"") DO UPDATE SET
|
||||
""name"" = EXCLUDED.""name"",
|
||||
""desc"" = EXCLUDED.""desc"",
|
||||
""modified_id"" = CASE EXCLUDED.""name""
|
||||
WHEN 'Name1' THEN 1
|
||||
WHEN 'Name2' THEN 1
|
||||
WHEN 'Name3' THEN 1
|
||||
WHEN 'Name4' THEN 1
|
||||
WHEN 'Name5' THEN 1 END::int4,
|
||||
""modified_id"" = 1,
|
||||
""modified_time"" = current_timestamp", sql);
|
||||
|
||||
//sql = g.pgsql.Insert(data)
|
||||
@@ -178,10 +173,7 @@ ON CONFLICT(""id"") DO UPDATE SET
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO ""testonconflictdoupdateinfo""(""id"", ""title"") VALUES(200, 'title-200'), (201, 'title-201'), (202, 'title-202')
|
||||
ON CONFLICT(""id"") DO UPDATE SET
|
||||
""title"" = EXCLUDED.""title"",
|
||||
""time"" = CASE EXCLUDED.""id""
|
||||
WHEN 200 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 201 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 202 THEN '2000-01-01 00:00:00.000000' END::timestamp");
|
||||
""time"" = '2000-01-01 00:00:00.000000'");
|
||||
odku2.ExecuteAffrows();
|
||||
|
||||
|
||||
@@ -199,10 +191,7 @@ ON CONFLICT(""id"") DO UPDATE SET
|
||||
}).IgnoreColumns(a => a.time).NoneParameter().OnConflictDoUpdate().IgnoreColumns(a => a.title);
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO ""testonconflictdoupdateinfo""(""id"", ""title"") VALUES(200, 'title-200'), (201, 'title-201'), (202, 'title-202')
|
||||
ON CONFLICT(""id"") DO UPDATE SET
|
||||
""time"" = CASE EXCLUDED.""id""
|
||||
WHEN 200 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 201 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 202 THEN '2000-01-01 00:00:00.000000' END::timestamp");
|
||||
""time"" = '2000-01-01 00:00:00.000000'");
|
||||
odku2.ExecuteAffrows();
|
||||
}
|
||||
|
||||
@@ -225,10 +214,7 @@ ON CONFLICT(""id"") DO UPDATE SET
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO ""testonconflictdoupdateinfo""(""id"", ""title"") VALUES(300, 'title-300'), (301, 'title-301'), (302, 'title-302')
|
||||
ON CONFLICT(""id"") DO UPDATE SET
|
||||
""title"" = EXCLUDED.""title"",
|
||||
""time"" = CASE EXCLUDED.""id""
|
||||
WHEN 300 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 301 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 302 THEN '2000-01-01 00:00:00.000000' END::timestamp");
|
||||
""time"" = '2000-01-01 00:00:00.000000'");
|
||||
odku2.ExecuteAffrows();
|
||||
|
||||
|
||||
@@ -246,10 +232,7 @@ ON CONFLICT(""id"") DO UPDATE SET
|
||||
}).InsertColumns(a => a.title).NoneParameter().OnConflictDoUpdate().UpdateColumns(a => a.time);
|
||||
Assert.Equal(odku2.ToSql(), @"INSERT INTO ""testonconflictdoupdateinfo""(""id"", ""title"") VALUES(300, 'title-300'), (301, 'title-301'), (302, 'title-302')
|
||||
ON CONFLICT(""id"") DO UPDATE SET
|
||||
""time"" = CASE EXCLUDED.""id""
|
||||
WHEN 300 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 301 THEN '2000-01-01 00:00:00.000000'
|
||||
WHEN 302 THEN '2000-01-01 00:00:00.000000' END::timestamp");
|
||||
""time"" = '2000-01-01 00:00:00.000000'");
|
||||
odku2.ExecuteAffrows();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user