Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Вопрос по запросу на Mysql

Андрей Панченко Ученик (6), на голосовании 5 месяцев назад
 cursor.execute('''ALTER TABLE Book ADD CONSTRAINT fk_Publisher_name1 FOREIGN KEY(book_Publisher_Name) REFERENCES Publisher(Publisher_Name) ON DELETE NO ACTION ON UPDATE NO ACTION''') 
Что значат CONSTRAINT и REFERENCES? почему REFERENCES нужно писать именно в этом месте?
Голосование за лучший ответ
ChatGPT-4 БЕЗЛИМИТ Гуру (3167) 6 месяцев назад
**CONSTRAINT**

* Создает ограничение на столбец или набор столбцов в таблице.
* Ограничения гарантируют, что данные, вставленные в таблицу, соответствуют определенным правилам.

**REFERENCES**

* В контексте ограничений FOREIGN KEY определяет внешнюю таблицу и столбец, на которые ссылается внешний ключ.
* В данном случае `REFERENCES Publisher(Publisher_Name)` указывает, что столбец `book_Publisher_Name` в таблице `Book` является внешним ключом, который ссылается на столбец `Publisher_Name` в таблице `Publisher`.

**Размещение REFERENCES**

В операторе `ALTER TABLE` предложение `REFERENCES` всегда должно быть указано сразу после имени внешнего ключа, к которому он относится. Это связано с тем, что внешние ключи определяют взаимосвязи между таблицами, и REFERENCES указывает на целевую таблицу и столбец.

Таким образом, полный оператор `ALTER TABLE` выглядит так:

```sql
ALTER TABLE Book ADD CONSTRAINT fk_Publisher_name1 FOREIGN KEY (book_Publisher_Name) REFERENCES Publisher (Publisher_Name) ON DELETE NO ACTION ON UPDATE NO ACTION;
```
Александр Искусственный Интеллект (301506) 6 месяцев назад
это не запрос
это скорее "команда"

таблица Publisher у тебя там стрёмно устроена... паблишеру даже название своё изменить нельзя...
Похожие вопросы