Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Alter table tovar






DROP CONSTRAINT Integ_3

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

Удалим из таблицы ненужную запись на английском языке…

DELETE FROM TOVAR

WHERE TOV_EDIZM = 'kg'

И добавим следующие поля:

ALTER TABLE TOVAR

ADD Id_Tov integer NOT NULL

ALTER TABLE TOVAR

ALTER Id_Tov POSITION 0, а также

ALTER TABLE TOVAR

ADD TOV_CREAT VARCHAR(10) CHARACTER SET WIN1251 DEFAULT USER NOT NULL,

ADD TOV_TSTAMP DATE DEFAULT 'NOW' NOT NULL

Рис.19 Результат заполнения таблиц БД

После этого ввод данных из консоли не получается, но при помощи операторов - все замечательно.

В таблице фиксируется кто и когда добавлял в нее записи.

Создаем новый Первичный ключ по полю Id_Tov:

ALTER TABLE TOVAR

ADD CONSTRAINT Tov_PK PRIMARY KEY (Id_Tov)

Создаем новый альтернативный ключ по полям Tov_NAME, TOV_EDIZM:

ALTER TABLE TOVAR

ADD CONSTRAINT Tov_UK UNIQUE (Tov_NAME, TOV_EDIZM)

Создание автоинкрементных полей. Генераторы.

Создадим “Автоинкрементное поле” на основе поля Id_Tov типа INTEGER и Генератора. Его создание позволяет автоматически задавать уникальные значения полям создаваемых записей.

Создаем генератор:

CREATE GENERATOR TOV_GEN

Задаем его начальное значение:

SET GENERATOR TOV_GEN TO 2

Для того, чтобы он “заработал” нужно создать триггер

SET TERM!!;

CREATE TRIGGER Tov_ID_BI FOR TOVAR

BEFORE INSERT

AS BEGIN

NEW.ID_Tov = GEN_ID(Tov_GEN, 1);

END

!!

SET TERM;!!

Выполнив этот SQL-скрипт, посмотрите - на закладке Свойства для таблицы TOVAR назначен триггер, срабатывающий перед вставкой новых записей (рисунок 20).

Рис.20 Перечень триггеров для таблицы TOVAR

Для чего нужны SET TERM!!

При передаче серверу команда SQL по умолчанию завершается “; ”. Но синтаксис операторов внутри хранимых процедур и триггеров также требует “; ” в конце. Поэтому вначале мы переопределяем символ, завершающий оператор SQL на последовательность “!! ”. Теперь он завершает команду ввода, а “; ” используется для окончания предложений операторов языка SQL внутри процедур. После текста триггера идет “!! ”, чтобы завершить команду SQL. Затем мы восстанавливаем значение символа “; ”.

О типах триггеров BEFORE и AFTER INSERT, UPDATE, DELETE, о смысле NEW.ID_Tov мы говорили на лекции. GEN_ID(Tov_GEN, 1) - функция, увеличивающая значения генератора Tov_GEN на 1. А могла бы и на 10, 25 и т.д.

Аналогично создайте таблицу покупателей POKUP с целым ПК Id_Pokup и генератором Pok_GEN и таблицу TEL_POKUP с ПК (Telef, Pok_Id):


Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.007 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал