SQL не имеет значения Null для всей таблицы - PullRequest
2 голосов
/ 28 сентября 2011

Мне было интересно, есть ли какой-нибудь способ создать одно ограничение Not Null, которое могло бы применяться ко всем атрибутам в моей таблице.Я знаю, что могу добавить по одному в каждую строку, но я просто пытаюсь научиться быть более эффективным.Я пытался искать в Интернете, и я не нашел ничего по этой теме.

Спасибо!

ДОПОЛНИТЕЛЬНАЯ ИНФОРМАЦИЯ:

Я думаю, что мой вопрос можно обобщить, чтобы спросить "Есть ли способ определить всю таблицу или базу данных?"ограничения? "Для всей этой базы данных мне нужно значение по умолчанию каждого varchar в '' (пустая строка), но сейчас я делаю это вручную для каждого varchar.

Опять же, я уже сделал большую часть этого, но, похоже, должен быть способ избежать этого повторения.

Ответы [ 3 ]

2 голосов
/ 28 сентября 2011

С http://dev.mysql.com/doc/refman/5.1/en/create-table.html - единственное место, где вы можете поставить нулевое / ненулевое значение, - это столбец.

column_definition:
    data_type [NOT NULL | NULL] [DEFAULT default_value]
      [AUTO_INCREMENT] [UNIQUE [KEY] | [PRIMARY] KEY]
      [COMMENT 'string']
      [COLUMN_FORMAT {FIXED|DYNAMIC|DEFAULT}]
      [STORAGE {DISK|MEMORY|DEFAULT}]
      [reference_definition]

Нет никаких причин для ограничения таблицы, ИМО.DDL определяет ограничения на данные в каждом столбце, а не само определение столбца.В то время как кто-то может захотеть использовать это как синтаксический сахар, может показаться, что могут быть недостатки: 1) добавить новый столбец, который может потребоваться изменить ограничение таблицы; 2) MySQL по умолчанию имеет значение NULL, что может привести к путанице

2 голосов
/ 28 сентября 2011

Нет, нет никакого способа сделать это.Вы должны указать это на уровне столбца, но это то, что вы делаете только один раз.Возможно, это несколько нажатий клавиш больше или один клик на столбец.Там нет неэффективности.

0 голосов
/ 28 сентября 2011

Вы думаете, в triggers или stored procedures? Это полностью зависит от вашей СУБД. Но это также добавляет чрезмерную работу в БД.

Забудьте о предложении CHECK, потому что mySql игнорирует его.

...