Альтернативно установка пустых значений в столбцах - PullRequest
0 голосов
/ 18 апреля 2019

Я строю базу данных, и одна из таблиц содержит столбцы "sensor_id" и "station_id". Когда кто-то пытается вставить новую строку в таблицу, мы можем иметь значение NULL в столбце «sensor_id», но тогда мы не можем иметь значение NULL в «station_id» ни при каких обстоятельствах. И наоборот, когда "station_id" равен NULL, "sensor_id" не должен быть равен NULL. Если значение введено в обоих столбцах, это не проблема.

В настоящее время я работаю в MySQL Workbench, и мне кажется, что я могу выбрать оба столбца как NN (не NULL), что является слишком строгой реализацией, так как одного из них достаточно, чтобы установить только один из них как NN, что означает, что один конкретный столбец всегда должен быть заполнен (но не в любом случае) или не устанавливать ни один из них NN, который слишком свободный, поскольку необходимо указать хотя бы одно из обоих значений.

Визуально таблица выглядит следующим образом (извините за замену Microsoft Word, но у меня проблемы с сервером MYSQL и я не могу получить доступ к базе данных):

Alert table

Alert_id является первичным ключом таблицы, поэтому для двух других столбцов допустимы повторяющиеся значения.

Как я мог это реализовать?

1 Ответ

0 голосов
/ 18 апреля 2019

Вы должны добавить contstraint к этой таблице, например:

  CONSTRAINT CheckSensorStationNotNull CHECK (station_id is not null or sensor_id is not null)
...