MySQL Workbench не будет накладывать ограничений, если родительская таблица имеет столбцы Generated Virtual

0

НАСТРОИТЬ

MySQL Workbench (версия 6.3.9)

MySQL 5.7.21

Моя настройка проста.. У меня есть 2 таблицы:

CREATE TABLE 'UserDevices' (
  'ID' int(11) NOT NULL AUTO_INCREMENT,
  'UserID' int(11) DEFAULT NULL,
  'UUID' binary(16) DEFAULT NULL,
  'DeviceName' varchar(45) DEFAULT NULL,
  'DeviceType' tinyint(3) NOT NULL DEFAULT '1',
  'CreatedDate' timestamp NULL DEFAULT CURRENT_TIMESTAMP,
  'TimeStamp' timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY ('ID')
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;


CREATE TABLE 'UserInfo' (
  'ID' int(11) NOT NULL AUTO_INCREMENT,
  'UUID' binary(16) DEFAULT NULL,
  'UUIDText' varchar(40) GENERATED ALWAYS AS (insert(insert(insert(insert(hex('UUID'),9,0,'-'),14,0,'-'),19,0,'-'),24,0,'-')) VIRTUAL,
  'FirstName' varchar(45) DEFAULT NULL,
  'LastName' varchar(45) DEFAULT NULL,
  'FullName' varchar(90) GENERATED ALWAYS AS (concat('FirstName',' ','LastName')) VIRTUAL,
  'Email' varchar(120) DEFAULT NULL,
  'Status' tinyint(3) DEFAULT '0',
  'AccountType' tinyint(3) DEFAULT '1',
  'CreatedDate' timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  'TimeStamp' timestamp NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
  PRIMARY KEY ('ID')
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;

ПРОБЛЕМА

При работе внутри Workbench я просто пытаюсь сделать ограничение внешнего ключа в таблице "UserDevices" в столбце "UserID", указанном в таблице "UserInfo" Column "ID". При выборе "UserInfo" в качестве ссылочной таблицы. Я не могу поставить проверку рядом с UserID.. Также в раскрывающемся списке в ссылочном столбце не отображаются столбцы.

ВОПРОС

Я понимаю, что существует целый ряд причин, по которым этот сценарий произойдет. Но я не вижу никакого несоответствия типа данных или такого, что объясняет это. Что это делает, поэтому я не могу выбрать UserID.ID?

PS Настройка другой таблицы с именем "DeviceMeasurements" с помощью столбца "DeviceID". Я полностью успешна при настройке ограничения точно так, как ожидалось.

ОБНОВИТЬ

На догадку, так как это мой первый раз, играя с Generated Virtual Columns. Я пошел в таблицу и удалил столбцы "UUIDText" и "FullName". ТЕПЕРЬ Я могу построить свои ограничения по своему желанию. Но мой вопрос стоит. Почему я не могу создать ограничение с таблицами, построенными, как указано выше !?

ОБНОВЛЕНИЕ 2

Это было подтверждено как ошибка в WorkBench. Вручную добавление ограничения с помощью SQL-кода в настоящий момент является действительной. См. Принятый ответ.

  • 0
    у вас есть более одного дБ? может быть, вы обращаетесь не к той таблице? Что происходит, когда вы создаете FK вручную с помощью кода SQL?
  • 0
    Да, у меня есть 7 различных схем в этом одном тестовом окне. Неправильный выбор таблицы был определенно исключен. Создание ограничения с помощью SQL-кода представляется успешным. Но это не вопрос / проблема.
Показать ещё 2 комментария
Теги:
mysql-workbench

1 ответ

1
Лучший ответ

Можете подтвердить, что это ошибка в WB. Поднял его с командой MySQL dev.

Ссылка на ошибку

  • 0
    Не могли бы вы уточнить, что один МОЖЕТ фактически использовать код SQL, чтобы вручную построить ограничение для других пользователей, которые сталкиваются с этой проблемой / ответом. Спасибо за подтверждение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню