Увы, это невозможно, как видно по синтаксису INSERT .Обратите внимание, что он просто говорит [INTO] tbl_name
без упоминания [AS] alias
, в то время как синтаксис Update , который допускает псевдонимы, говорит "table_reference" и дополнительная документация утверждает, что это может быть расширен table_factor , который включает tbl_name [AS] alias
.
К сожалению, возможность использовать псевдонимы таблиц в INSERT очень полезна для операторов INSERT ... ON DUPLICATE KEY UPDATE
.Особенно при выполнении проверок столбцов, как в этом примере:
insert into very_long_table_name_that_can_be_modified_one_day_or_during_testing (
mykey,
column1,
column2,
column3,
<column99>
)
select
mykey,
column1,
column2,
column3,
<column99>
from subquery
on duplicate key update
column1 = ifnull(values(column1), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column1),
column2 = ifnull(values(column2), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column2),
column3 = ifnull(values(column3), very_long_table_name_that_can_be_modified_one_day_or_during_testing.column3),
<column99>;
Если имя таблицы изменяется, нужно изменить много строк кода по сравнению с тем, чтобы в начале был псевдоним, который используется взапрос.