powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается установить внешний ключ.
23 сообщений из 23, страница 1 из 1
Не получается установить внешний ключ.
    #38705150
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не могу в этой БД сделать столбцы t_s.id_n и t_s.id_s сделать внешними ключами для tn.idn и ts.ids соответственно.
Дамп прилагаю.
Что не так? Не показывает в phpMyAdmin для t_s никаких настрое связей.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705161
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkНе могукоманда не набирается? или всё-таки сервер ошибку выдаёт? если первое, то ничем помочь не сможем, а если второе, то где её текст?
впрочем, судя по дампу, подозреваю, что в этой таблице просто есть записи "без родителей"
попробуйте её очистить и сделать внешние ключи
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705195
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я ничего не пишу, ошибок нет, просто вот такая ерунда — нет настроек внешних ключей для таблицы t_s.
Снимки приложил.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705203
tanglir
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk, ну, по глюкам пхпмуадмина я не спец. Создавайте ключи запросом, там и увидите, в чём затык (если он будет).
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705221
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я подозреваю, что это как-то связанно с тем, что в t_s нет ни одного первичного ключа. Он там просто не нужен. Это единственное отличие, которое я нашёл между таблицами.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705425
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Код: sql
1.
2.
3.
4.
5.
ALTER TABLE t_s
ADD FOREIGN KEY id_n
REFERENCES tn (idn)
ON DELETE CASCADE
ON UPDATE CASCADE



Выдаёт ошибку синтаксиса.

#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'REFERENCES ts (ids) ON DELETE CASCADE ON UPDATE CASCADE' at line 3

Мне нужно в таблице t_s сделать её столбец id_n внешним ключём к столбцу tn.idn/
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705440
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

Имя поля id_n нужно в скобки брать.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705458
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ALTER TABLE t_s
ADD FOREIGN KEY vk_id_s(id_s)
REFERENCES ts(ids)
ON DELETE NO ACTION
ON UPDATE CASCADE;

Здесь vk_id_s это название внешнего ключа, которое мы сами задаём? Без него можно или нет?
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705461
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

ну вы бы в доку хоть одним глазом глянули...
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html | ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
reference_definition
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705470
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftandrejk,

ну вы бы в доку хоть одним глазом глянули...
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html | ADD [CONSTRAINT [symbol]]
FOREIGN KEY [index_name] (index_col_name,...)
reference_definition


Я сам учусь, мне сложно доки читать пока, я не понимаю тех условных обозначений. Мне проще на примерах и ответах на мои «глупые» вопросы.

Если подскажете, где можно ознакомиться с условными обозначеними в доках, буду признателен.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705477
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkЕсли подскажете, где можно ознакомиться с условными обозначеними в доках, буду признателен.Да все там же - в доке. См. Typographical and Syntax Conventions
Хотя обозначения совершенно стандартные, мне в этот раздел до сих пор и заглядывать нужды не было.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705478
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Основных моментов три:
1) квадратные скобки - необязательные части
2) вертикальная палка - можно написать что-то одно из вариантов
3) фигурная скобка - обязательная часть, как правило с выбором в виде строк, разделенных вертикальными палками.
Все три обозначения используются только для чтения синтаксиса, но не при записи реальных команд.

Круглые скобки и запятые - просто элемент синтаксиса. Т.е. пишутся в командах как есть.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705480
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftОсновных моментов три:
1) квадратные скобки - необязательные части
2) вертикальная палка - можно написать что-то одно из вариантов
3) фигурная скобка - обязательная часть, как правило с выбором в виде строк, разделенных вертикальными палками.
Все три обозначения используются только для чтения синтаксиса, но не при записи реальных команд.

Круглые скобки и запятые - просто элемент синтаксиса. Т.е. пишутся в командах как есть.

А вот за это спасибо, ибо с английским я никак, только на уровне синтаксиса. Так бесит, когда тебя в английские тексты тыкают. Нахрен, спрашивается, тогда я у русских спрашиваю?
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705482
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkТак бесит, когда тебя в английские тексты тыкают. Нахрен, спрашивается, тогда я у русских спрашиваю?Тыкают не в "английские тексты", а в оригинальную документацию. Переводная в ряде случаев существует, но часто страдает от недостатков. Например, по MySQL русскоязычная документация закончилась на версии 4.1. Да и та страдала ошибками перевода.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705489
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Тут вот какая задача.
Есть бд:

tn (idn, n) — таблица наборов слов.
ts (ids, s) — таблица слов.
t_s (id_n, id_s) — таблица связей между наборами и словами.

Нужно, чтобы удаляя слово из таблицы слов, удалялись и все связи его с наборами слов из таблицы связей.
Аналогично и с наборами.
При этом не должно оставаться слов в таблице слов и наборов в таблице наборов, которые не представлены в таблице связей.
Т. е., если при удалении слова из т. слов удаляются последние упоминания о наборе из т. связей, то удаляется и набор из т. наборов (это возможно, если набор слов состоял только из нашего слова).
Аналогично и с удалением наборов — удалять те слова из т. слов, которые были привязаны только к нашему набору.

Как лучше организовать возможность редактирования бд: через внешние ключи или через запросы? Или через смесь и того и другого?
Приоритет за надёжностью, а не за скоростью и размером запроса.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705492
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Таблица наборов в принципе и не нужна для этой задачи, но предполагается в ней в будущем хранить некоторую информацию о наборе. n — это имя набора, просто имя (имя файла, время создания набора или ещё что-то, неважно).
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705494
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejk,

Вы хотите странного.
Тут внешние ключи не помогут.
Тут нужны либо хранимые процедуры, либо наборы SQL-запросов в клиентском приложении.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705501
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Почему странного?

Что плохого в наборах запросов? Главное задачу решить. Я так и предполагал, что только запросы с проверкой на существование, ибо эти fk муть полная.

ну так почему-же странного?
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705505
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkПри этом не должно оставаться слов в таблице слов и наборов в таблице наборов, которые не представлены в таблице связей.Вот это странное.
Если этого не требовать или, например, отделить это от основной логики в регулярно выполняемый скрипт, то внешних ключей было бы достаточно.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705508
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Да вот в том-то и дело, что должна быть возможность редактировать и удалять наборы и слова. И если всё не связать, то со временем в бд появится куча «летучих голландцев» как в наборах, так и в словах. А нафик они надо?
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705533
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkИ если всё не связать, то со временем в бд появится куча «летучих голландцев» как в наборах, так и в словах.Не обязательно. Вариант я уже предлагал.
miksoftотделить это от основной логики в регулярно выполняемый скрипт

Продумайте все сценарии работы с таблицами.
Например такой:
Завел пользователь слово, добавил его в набор. А потом понял, что ошибся, не в тот набор добавил. И удалил из набора. Хочет в другой, правильный набор добавить, а слова-то уже и нету...
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38705559
Serzh007
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На этот счёт я подумаю над ограничением свободы пользователя, чтоб был минимальный набор действий, но из которого можно сделать всё, что нужно, пусть и не совсем рационально. А если удалит слово или не так его напишет, то исправить можно будет тлько через удаление-создание, ибо нех…))) ошибаться.
...
Рейтинг: 0 / 0
Не получается установить внешний ключ.
    #38706786
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andrejkЯ подозреваю, что это как-то связанно с тем, что в t_s нет ни одного первичного ключа. Он там просто не нужен. Это единственное отличие, которое я нашёл между таблицами.

первичный ключь обязан быть в родительской таблице. без его внешний кость не создать
...
Рейтинг: 0 / 0
23 сообщений из 23, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Не получается установить внешний ключ.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]