Подтвердить что ты не робот

Создание представления MySQL с помощью столбца автоинкрементного идентификатора

У меня есть база данных MySQL, из которой создается представление. Можно ли добавить автоматически увеличивающийся идентификатор для каждой строки в представлении?

Я пробовал

CREATE ALGORITHM=UNDEFINED DEFINER=`database_name`@`%` SQL SECURITY DEFINER VIEW `MyView` AS 
set @i = 0;
select  @i:[email protected]+1 as `id`
        ...

но это не работает в представлении.

4b9b3361

Ответ 1

Извините - вы не можете автоинкремент в VIEW (вы можете сделать это в хранимой процедуре, хотя).

Из руководства MySQL:

Определение вида зависит от следующие ограничения: SELECT оператор не может ссылаться на систему или пользовательские переменные.

Ответ 2

Я знаю, что этот вопрос старый, но на случай, если другие столкнутся с этим вопросом, есть другая альтернатива.

ВАЖНО! Эта альтернатива действительна до тех пор, пока автоинкремент не очень важен, и поэтому вам нужен только уникальный идентификатор для строк представления:

Вы можете использовать функцию UUID(), которая предоставляет вам уникальный буквенно-цифровой идентификатор. Проверьте документацию в mysql-reference-manual

Следовательно, вы можете создать вид, подобный этому:

Create view my-view AS
Select UUID() as 'id', t.name, t.value
from table t
....

Ответ 3

Попробуйте это,

CREATE VIEW view_wp_postmeta AS(
SELECT (
  SELECT count( meta_id ) +1
  FROM wp_postmeta 
  AS vtmp     
  WHERE vtmp.meta_id < pm.meta_id
) AS vtmp_id, pm. *
FROM wp_postmeta AS pm
ORDER BY pm.meta_id DESC
)

В WordPress meta_id = AUTO_INCREMENT в wp_postmeta TABLE, я создаю VIEW для этого, в котором view_id ведет себя как AUTO_INCREMENT в порядке DESC.

Например, В ТАБЛИЦА wp_postmeta → meta_id [3,5,6,10,2,11] которые появятся в VIEW view_wp_postmeta → view_id [6,5,4,3,2,1]

Ответ 4

попробуй это,

create view view_st as
select row_number() over (order by column_st) id, column_st 
from table_st;