Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Горев “Эффективная работа с СУБД”.pdf
Скачиваний:
208
Добавлен:
28.06.2014
Размер:
4.71 Mб
Скачать

converted to PDF by HupBaH9I

Здесь следует отметить, что можно использовать либо выражение в виде константы, либо функцию (встроенную или пользовательскую), которая не требует аргументов. Совершенно очевидно, что для колонки типа Timestamp значение по умолчанию устанавливать нельзя, так же как и для поля IDENTITY (счетчик). Если вы записываете данное ограничение как отдельное выражение, необходимо использовать ключевое слово FOR colname.

Рассмотрим пример использования ограничения Constraint. В данном примере создается таблица, колонка accept_date которой будет принимать значение текущей даты при добавлении новой записи в таблицу, - безусловно, только в том случае, если не будет указано явное значение.

CREATE TABLE autostore.yourreadness.child_table (tree char(20),

branch money, childs varchar(25),

accept_date datetime DEFAULT getdate()

FOREIGN KEY (tree,branch) REFERENCES pat_table(tree,branch)

Ограничение Check лимитирует список значений, которые мы можем ввести в колонку. Оно имеет следующий синтаксис:

[CONSTRAINT constraintname]

CHECK [NOT FOR REPLICATION] (expression)

В случае, если вы используете опцию NOT FOR REPLICATION, данное правило проверки уровня поля не будет срабатывать при операции репликации таблицы, в которой оно используется.

Рассмотрим пример использования ограничения Check. В следующем примере параметр Check ограничивает ввод в колонке accept_date значениями, не превышающими дату следующего за текущим дня.

CREATE TABLE autostore.yourreadness.child_table (tree char(20),

branch money, childs varchar(25),

accept_date datetime CHECK accept_date << getdate()+1 FOREIGN KEY (tree,branch) REFERENCES pat_table(tree,branch)

Создание представлений

Представления служат для вывода информации из одной или нескольких таблиц путем использование запроса. Синтаксис создания представления существенно короче, чем у команды

CREATE TABLE.

CREATE VIEW [owner.]viewname [(columnname [, columnname]...)] [WITH ENCRYPTION]

AS selectstatement [WITH CHECK OPTION]

Здесь аргумент owner определяет владельца этой таблицы. Viewname - название представления. Далее, по выбору, можно указать свои собственные названия колонок, перечислив новые наименования в скобках. Если использовать предложение WITH ENCRYPTION, то можно затруднить пользователям возможность узнать, откуда представление получает данные. Предложение WITH CHECK OPTION позволяет в случае модификации записи посредством представления гарантировать, что запись будет доступна через представление, после того как изменения будут записаны на диск. После ключевого слова AS записывается выражение команды

SQL-SELECT.

Рассмотрим пример создания представления:

CREATE VIEW yourreadness.somekindofview

AS SELECT tree FROM Сhild_table

Создание триггеров

converted to PDF by HupBaH9I

Триггеры создаются командой CREATE TRIGGER, имеющей следующий синтаксис:

CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name

FOR {INSERT, UPDATE, DELETE} [WITH ENCRYPTION]

AS sql_statements

Есть возможность использовать альтернативный синтаксис, который выглядит так:

CREATE TRIGGER [owner.]trigger_name ON [owner.]table_name

FOR {INSERT, UPDATE} [WITH ENCRYPTION] AS

IF UPDATE (column_name)

[{AND | OR} UPDATE (column_name)...] sql_statements

Коротко о триггерах можно сказать как об особого рода хранимых процедурах, которые автоматически срабатывают во время операций модификации, удаления или добавления записей. Триггеры используются, как правило, для создания бизнес-правил и поддержки ссылочной целостности данных. Естественно, что непомерное использование триггеров замедляет работу.

Предложение WITH ENCRIPTION, так же как и в случае с представлениями, служит для того, чтобы скрыть от постороннего глаза SQL выражение, которое он запускает.

Существуют определенные ограничения на использование триггеров. Нельзя использовать их в представлениях. Рекомендуется не использовать SQL выражения, которые возвращают наборы данных.

8.2. Использование Visual FoxPro для разработки клиентского приложения

Итак, в предыдущем параграфе мы освоили необходимый минимальный набор команд, которого достаточно, чтобы начать работать с данными на SQL Server. Настала пора обсудить вопросы построения клиентской части, при этом вспомнив набор из шести операций, которые нам доступны из приложения front-end. В итоге получается, что из клиентской части нам доступны все операции. На всякий случай не забудьте про возможность недостаточного совершенства имеющегося драйвера ODBC.

В этом параграфе мы обсудим вопросы создания приложения типа клиент-сервер с помощью

Visual FoxPro.

Visual FoxPro предоставляет следующие средства для работы с данными, имеющими другой формат:

1.Конструктор соединения (Connection Designer). Альтернативно можно использовать команду CREATE CONNECTION. В этом случае для многих установок надо использовать функцию DBSETPROP().

2.Конструктор представления (View Designer). Можно использовать команду CREATE SQL VIEW. В этом случае свойства полученного представления необходимо изменять с

помощью функции DBSETPROP().

3.Набор функций SQL pass-through позволяет контролировать работу сервера с помощью диалекта SQL самого сервера. Главным образом используется для получения выборки данных для дальнейшей обработки в клиентской части приложения. В то же время вам становятся доступны практически все команды и возможности сервера.

Конструктор соединения используется для создания и модификации соединений, хранимых в базе данных. Активизируется Конструктор соединения, так же как и другие дизайнеры в Visual FoxPro, тремя способами:

1.В меню File выполнить команду New, затем выбрать Connection.

2.Из командного окна с помощью команды CREATE CONNECTION.

3.Из Project Manager, выбрав Connection, New.

converted to PDF by HupBaH9I

Соединения хранятся только в базах данных, поэтому необходимо, чтобы во время создания соединения была открыта база данных, лучше та, в которой это соединение будет использоваться.

После запуска вам необходимо последовательно заполнить текстовые поля, которые называются Data Source, UserID и Password. Здесь есть один момент, который необходимо отметить. Data Source уже должен быть создан посредством Администратора ODBC. Как уже указывалось, обычно после установки Visual FoxPro, Администратор ODBC уже присутствует на вашем компьютере. Запустите Администратор ODBC и создайте Data Source с использованием ODBC драйвера, в нашем случае это SQL Server (рис. 8.2). С помощью кнопки Drivers вы можете проверить наличие имеющихся на компьютере драйверов ODBC. Для создания Data Source необходимо нажать на кнопку Add и в появившемся диалоговом окне заполнить необходимые поля. Имена DataSource старайтесь давать осмысленные, чтобы в дальнейшем помнить, какой Data Source за что отвечает. Далее заполните имя сервера и в диалоге Options укажите имя базы данных, к которой вы будете подсоединяться. В примерах мы будем подсоединяться к базе данных Pubs, которая поставляется как образец с MS SQL Server. В зависимости от используемого драйвера диалоговые окна, открывающиеся после нажатия кнопки Add и выбора нужного драйвера, несколько различаются, но, как правило, главное, что нам нужно - это имя базы данных, доступ к таблицам которой мы хотим иметь, путь или имя папки, в которой хранятся таблицы, если приложение не работает с базой данных как с контейнером таблиц.

Рис. 8.2. Выбор необходимого ODBC драйвера

Создав Data Source, мы имеем все для подготовки соединения и записи его определения в текущую базу данных. Выберите из комбинированного списка с заголовком "Data Source" ваш Data Source (извините за тавтологию), затем введите ваше пользовательское имя в текстовое поле UserID и пароль в текстовое поле PassWord. Сверху от трех полей, которые мы заполнили, находятся две кнопки выбора, правая называется "Connection String". Если вам больше нравится вводить Connection String, то выберите эту кнопку выбора, - в таком случае вы берете на себя не очень обременительную, но все-таки обязанность написать строку соединения самостоятельно, не делегировав эти права Visual FoxPro. Вам нужно набрать что-либо подобное (рис. 8.3):

converted to PDF by HupBaH9I

Рис. 8.3.

DSN=IGOTOSQL;UserID=IAMGENIUS;_ Password=JesusChristSuperStar;Database=Pubs

При этом не используйте никаких кавычек, иначе ODBC вместо установки соединения вернет ошибку. В случае использования строки соединения вы сами выполняете ту работу, которую выполнил бы Visual FoxPro, в том случае, если бы вы ввели всю информацию раздельно в соответствующие текстовые поля.

Далее нужно выбрать, будет ли появляться диалоговое окно с просьбой ввести

пользовательское имя при каждом использовании соединения для доступа к таблицам базы данных на сервере. Предлагаются три варианта выбора:

1.Окно будет появляться, если не будет указано пользовательское имя в строке соединения.

2.Окно будет появляться всегда.

3.Окно не будет появляться никогда.

Команда CREATE CONNECTION может использоваться для того, чтобы создавать соединения программным путем, правда, при этом если вы не укажете предложение DATASOURCE, то все равно на экране появится Конструктор соединения. База данных также должна быть открыта, как и при создании Соединения с помощью Конструктора соединения.

Соединение, созданное в предыдущем примере, программным путем можно создать так:

CREATE CONNECTION mysqlconnect ;

DATASOURCE "igotosql" ;

USERID "Iamgenius" PASSWORD "JesusChristSuperStar"

Как уже было упомянуто, SQL pass-thtough - это средство по созданию SQL команд и передачи их в базу данных SQL. Первой мы рассмотрим функцию SQLCONNECT(), которая устанавливает соединение с источником данных. С помощью этой функции можно создать стандартное соединение (Standard Connection), строку соединения (Connect string) и поименованное соединение (Name Connection).

Ниже приводятся примеры для создания каждого типа соединения.

Стандартное соединение hndl=SQLCONNECT('igotosql','iamgenius')

Строка соединения

hndl=SQLCONNECT('igotosql','iamgenius', 'JesusChristSuperStar','pubs')

Поименованное соединение hndl=SQLCONNECT('mysqlconnect')

Соседние файлы в предмете Программирование на Delphi