none
Создание записи при выполнении условия заполнения полей этой записи. RRS feed

  • Вопрос

  • И еще вопрос:) 

    Нужно чтобы при создании записи, в случае, если заполнено одно поле и не заполнено другое, запись не создавалась и требовала дозаполнить нужные поля, т.е.:

    Столбец А; Столбец B; Столбец C

    Если заполнен столбец А, то должен быть заполнен и столбец С, иначе запись создана не будет.

    Как это можно сделать в SQL? Использовать хранимые процедуры?
    • Перемещено Tagore Bandlamudi 2 октября 2010 г. 0:23 MSDN Forums consolidation (От:SQL Server для разработчиков)
    24 февраля 2010 г. 15:26

Ответы

  • Мне кажется лучший вариант - CHECK CONSTRAINT.

    ADD CONSTRAINT CHK_AC CHECK (A IS NOT NULL AND C IS NOT NULL );
    GO
    

    Но ещё лучше такие проверки делать в самом приложении, и не обращаться к серверу в случае невыполнения условия.

    • Помечено в качестве ответа EgoZa 24 февраля 2010 г. 16:28
    • Снята пометка об ответе EgoZa 24 февраля 2010 г. 17:50
    • Предложено в качестве ответа PashaPashModerator 24 февраля 2010 г. 17:56
    • Отменено предложение в качестве ответа EgoZa 24 февраля 2010 г. 17:59
    • Помечено в качестве ответа EgoZa 24 февраля 2010 г. 18:41
    24 февраля 2010 г. 16:01
  • так по аналогии, ((A IS NULL) OR (A IS NOT NULL AND С IS NOT NULL))
    • Помечено в качестве ответа EgoZa 24 февраля 2010 г. 18:40
    24 февраля 2010 г. 18:14
    Модератор

Все ответы

  • Мне кажется лучший вариант - CHECK CONSTRAINT.

    ADD CONSTRAINT CHK_AC CHECK (A IS NOT NULL AND C IS NOT NULL );
    GO
    

    Но ещё лучше такие проверки делать в самом приложении, и не обращаться к серверу в случае невыполнения условия.

    • Помечено в качестве ответа EgoZa 24 февраля 2010 г. 16:28
    • Снята пометка об ответе EgoZa 24 февраля 2010 г. 17:50
    • Предложено в качестве ответа PashaPashModerator 24 февраля 2010 г. 17:56
    • Отменено предложение в качестве ответа EgoZa 24 февраля 2010 г. 17:59
    • Помечено в качестве ответа EgoZa 24 февраля 2010 г. 18:41
    24 февраля 2010 г. 16:01
  • У меня была идея защитить данные от ошибок в приложении. Ведь на этапе проектирования таблицы уже очевидно, какие условия должны быть наложены на создание записи. Так почему бы не задать это условие... Если в приложении ошибка - сразу видно будет.

    24 февраля 2010 г. 16:22
  • Это не совсем то, что нужно...

    Это выражение не дает создать строку в случае отсутсвия данных в А и С. Мне же нужно чтобы CHECK работал только в том случае, если в столбец А вставлено значение. Если значения в столбце А нет, тогда его и не должно быть в столбце С. Если значение есть в столбце А, тогда оно должно быть и в столбце С.

    24 февраля 2010 г. 17:55
  • CHECK CONSTRAINT - это и есть условие, налагаемое на создание/изменение записи в таблице. На этапе проектирования.
    24 февраля 2010 г. 17:55
    Модератор
  • Да, но в данном случае пример приведенный Денисом не совсем то, что мне нужно :(
    24 февраля 2010 г. 17:58
  • так по аналогии, ((A IS NULL) OR (A IS NOT NULL AND С IS NOT NULL))
    • Помечено в качестве ответа EgoZa 24 февраля 2010 г. 18:40
    24 февраля 2010 г. 18:14
    Модератор
  • Спасибо, чайник я в SQL :)

    24 февраля 2010 г. 18:40