powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / MySQL [игнор отключен] [закрыт для гостей] / FOREIGN KEY на префикс - туплю...
2 сообщений из 2, страница 1 из 1
FOREIGN KEY на префикс - туплю...
    #40090098
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: sql
1.
2.
3.
4.
5.
CREATE TABLE main (mid INT, val VARCHAR(10), UNIQUE ( mid, val(5) ));

CREATE TABLE slave (sid INT, 
                    val VARCHAR(10),
                    FOREIGN KEY (sid, val(5)) REFERENCES main (`mid`,`val`(5)) );


Второй запрос приводит к ошибке
MySQLYou have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(5) ))' at line 3
При этом указанное в ссылке выражение абсолютно точно соответствует тому, что имеется в первой таблице и показывается в SHOW CREATE TABLE main.

Как правильно? туплю? или не бывает?

fiddle
...
Рейтинг: 0 / 0
FOREIGN KEY на префикс - туплю...
    #40090134
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina,

К сожалению, https://dev.mysql.com/doc/refman/8.0/en/create-table-foreign-keys.html
docIndex prefixes on foreign key columns are not supported.

Так что generated column нужен, а-ля
Код: sql
1.
2.
3.
4.
CREATE TABLE main (mid INT, val VARCHAR(10), GENERATED ALWAYS as (left(val,5)) stored, UNIQUE ( mid, val_5 ));
CREATE TABLE slave (sid INT, 
                         val VARCHAR(10),
                         FOREIGN KEY (sid, val) REFERENCES main (`mid`,`val_5`) );


(для mysql ещё и именно stored нужен, на virtual говорит не умеет вешать fk)
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / FOREIGN KEY на префикс - туплю...
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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