Позиция, позиция, позиция

Как Oracle узнает, какие столбцы следует заполнять и какими данными? Ответ простой — расположение. Расположение может влиять на таблицы в базе данных Oracle; расположение данных в операторе insert должно соответствовать расположению столбцов таблицы. Пользователь может определить порядок размещения столбцов в таблице, используя команду describe или выходные данные словарного представления USER_TAB_COLUMNS, упорядоченные по столбцу COLUMN_ID с помощью фразы order by. Порядок, в котором перечислены столбцы команды describe, — это тот порядок, в котором должны быть расположены значения, подлежащие вставке в таблицу, если не были явно указаны имена столбцов таблицы. Взгляните сами:

SQL> select column_name, column_id

2 from user_tab_columns

3 where table_name = 'EMPLOYEE'

4 order by colurnn_id;

COLUMN_NAME COLUMN__ID

EMPID 1

LASTNAME 2

FIRSTNAME 3

SALARY 4

HIRE_DATE 5

DEPT 6

SQL> describe employee

Name Null? Type

EMPID NOT NULL VARCHAR2(5)

LASTNAME NOT NULL VARCHAR2(25)

FIRSTNAME VARCHAR2(25)

SALARY NUMBER(10,4)

HIRE_DATE DATE

DEPT VARCHAR2(10)

Нельзя не отметить, что вставить в требующийся столбец данные требующегося типа, используя совпадение положения значения в списке значений с положением столбца в списке столбцов, не так легко, как кажется. Если тип добавляемых в столбец данных не совпадает с типом данных, определенным для таблицы, Oracle возвратит сообщение об ошибке. Посмотрим, что полу­чится, если мы попытаемся включить в столбец типа NUMBER текстовую информацию:

SQL> insert into emp (empno, ename, sal)

2 values ('SMITHERS, 7444, 900);

values ('SMITHERS',7444,900)

ERROR at line 2; ORA-01722: invalid number

(недопустимое число)

К счастью, Oracle извещает нас о несовпадении типов данных, так что мы можем выполнить корректировку вводимых данных. Но не всегда мы оказываемся такими счастливчиками, особенно в тех случаях, когда тип вводимых данных совпадает с тем типом, который Oracle ожидает для этого столбца, но сами данные тем не менее некорректны. Вот еще один пример, в котором мы случайно добавляем в таблицу ЕМР новую запись, где информация о работе ошибочно помещается в столбец ENAME:

SQL> insert into emp (empno, ename, job, sal) 2 values (7444, 'LACKEY’, 'SMITHERS', 900);

1 cow created.

Мы с вами знаем, что LACKEY не является именем этого служащего, а его (или ее) должность никоим образом не называется SMITHERS. Однако Oracle не выработает сообщения об ошибке, так что если вы не будете внимательны, вы постоянно будете загружать в свои таблицы массу никому не нужной информации. Итак, мораль этой истории такова: будьте внимательны при включении в таблицу новых записей, чтобы избежать ошибок, но будьте трижды внимательны, чтобы избежать проблем при включении данных, которые не вызывают ошибки, но при этом неверны контекстуально.








Дата добавления: 2015-08-21; просмотров: 581;


Поиск по сайту:

При помощи поиска вы сможете найти нужную вам информацию.

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

Если вам перенёс пользу информационный материал, или помог в учебе – поделитесь этим сайтом с друзьями и знакомыми.
helpiks.org - Хелпикс.Орг - 2014-2024 год. Материал сайта представляется для ознакомительного и учебного использования. | Поддержка
Генерация страницы за: 0.004 сек.