Muranx
@Muranx
кто понял this тот в цирке не смеётся

Как получить имя первичного ключа?

Использую следующий код для создания таблицы:

create table new_tab (id int);
insert into new_tab (id) values (1), (2), (3);
alter table new_tab add constraint my_primary primary key (id);

Предполагаю, что имя ограничения первичного ключа будет my_primary, поэтому если я захочу удалить этот первичный ключ, по идее мне нужно прописать это имя ограничения:

alter table new_tab drop constraint my_primary;

В результате данного запроса получаю следующую ошибку:

ERROR: 3940: Constraint 'my_primary' does not exist.

ограничение с данным именем не существует.

1) В чем ошибка запроса на удаление первичного ключа?
2) Как можно найти имя первичного ключа, если допустим его не прописал в ручную при создании как Я?
3) Почему запрос
select * from information_schema.table_constraints where table_name = 'new_tab';

возвращает
+--------------------+-------------------+-----------------+--------------+------------+-----------------+----------+
| CONSTRAINT_CATALOG | CONSTRAINT_SCHEMA | CONSTRAINT_NAME | TABLE_SCHEMA | TABLE_NAME | CONSTRAINT_TYPE | ENFORCED |
+--------------------+-------------------+-----------------+--------------+------------+-----------------+----------+
| def                | test              | PRIMARY         | test         | new_tab    | PRIMARY KEY     | YES      |
+--------------------+-------------------+-----------------+--------------+------------+-----------------+----------+

из которого следует, что constraint_name = "PRIMARY" (где-то в глубине души я понимаю, что это просто название самого ограничения, а не имя этого ограничения)?
  • Вопрос задан
  • 304 просмотра
Пригласить эксперта
Ответы на вопрос 1
FanatPHP
@FanatPHP
Чебуратор тега РНР
1. выполняем код
create table new_tab (id int);
alter table new_tab add constraint my_primary primary key (id);
alter table new_tab add key my_primary (id);
SHOW INDEX FROM new_tab;

2. думаем
3. пишем 100 раз на доске фразу, "Я всегда буду задавать вопрос про исходную задачу (как удалить первичный ключ), а не про косяки, с которыми столкнулся при её решении (как узнать имя первичного ключа, чтобы его удалить)"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы