Базы данных - модели, разработка, реализация


         

в которой будет храниться количество


  • */


  • AS


  • /*опишем переменную, в которой будет храниться количество оставшихся


  • не оприходованных экземпляров книги, т.е. таких, которым еще не заданы


  • инвентарные номера */


  • DECLARE @ТЕК int


  • / *вводим данные о книге в таблицу BOOKS */


  • INSERT INTO BOOKS VALUES(@ISBN.@TITL.@AUTOR.@COAUTOR.@YEARIZD.@PAGES)


  • /* назначение значения текущего счетчика оставшихся к вводу экземпляров*/


  • SELECT @TEK = @NUM_EXEMPL


  • /* организуем цикл для ввода новых экземпляров данной книги */


  • WHILE @TEK>0 /* пока количество оставшихся экземпляров больше нуля */


  • BEGIN


  • /* так как для инвентарного номера экземпляра книги мы задали свойство


  • IDENTITY, то нам не надо вводить инвентарный номер. СУБД сама автоматически


  • вычислит его, добавив единицу к предыдущему, введет при выполнении оператора


  • ввода INSERT.


  • Поле, определяющее присутствие экземпляра в библиотеке (EXIST) - логическое


  • поле, мы введем туда значение TRUE,которое соответствует присутствию


  • экземпляра книги в библиотеке.


  • Даты взятия и возврата мы можем не заполнять, тогда по умолчанию СУБД


  • подставит туда значение, соответствующее 1 января 1900 года, если мы не хотим


  • хранить такие бессмысленные данные, то можем ввести для обоих полей дата


  • время, значения текущей даты. */


  • 264

  • Insert Into EXEMPLAR (ISBN.DATA_IN,DATA_OUT,EXIST)


  • VALUES (@ISBN.GetDate().GetDate()).TRUE)


  • /* изменение текущего значения счетчика количества оставшихся экземпляров */


  • SELECT @ТЕК = @ТЕК - 1


  • End /* конец цикла ввода данных о экземпляре книги*/


  • GO


  • Если мы не использовали инкрементное поле в качестве инвентарного номера экземпляра, то мы могли бы сами назначать инвентарный номер, увеличивая на единицу номер последнего хранимого в библиотеке экземпляра книги. Можно было бы попробовать просто сосчитать количество существующих экземпляров в библиотеке, но мы могли удалить некоторые, и тогда номер нового экземпляра может быть уже использован, и мы не сможем ввести данные, система не позволит нам нарушить уникальность первичного ключа.

    Текст процедуры в этом случае будет иметь вид:


    Содержание  Назад  Вперед