powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
5 сообщений из 5, страница 1 из 1
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
    #40041267
ora20212021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
При выполнении update'а таблицы - будут ли проверяться ограничения целостности, если изменялись только столбцы, на которых ограничений целостности - нет? И вообще - возможно ли как-то проверить, что в результате выполнения оператора ограничения целостности - проверялись?
...
Рейтинг: 0 / 0
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
    #40041343
Фотография SY
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
SQL> DROP TABLE CHILD PURGE
  2  /

Table dropped.

SQL> DROP TABLE PARENT PURGE
  2  /

Table dropped.

SQL> CREATE TABLE PARENT(
  2                      ID NUMBER
  3                     )
  4  /

Table created.

SQL> ALTER TABLE PARENT
  2    ADD CONSTRAINT PK_PARENT
  3      PRIMARY KEY(
  4                  ID
  5                 )
  6  /

Table altered.

SQL> CREATE TABLE CHILD(
  2                     ID NUMBER,
  3                     PARENT_ID NUMBER
  4                    )
  5  /

Table created.

SQL> ALTER TABLE CHILD
  2    ADD CONSTRAINT PK_CHILD
  3      PRIMARY KEY(
  4                  ID
  5                 )
  6  /

Table altered.

SQL> INSERT
  2    INTO CHILD
  3    VALUES(
  4           1,
  5           1
  6          )
  7  /

1 row created.

SQL> ALTER TABLE CHILD
  2    ADD CONSTRAINT FK_CHILD
  3      FOREIGN KEY(
  4                  PARENT_ID
  5                 )
  6      REFERENCES PARENT
  7      ENABLE NOVALIDATE
  8  /

Table altered.

SQL> UPDATE CHILD
  2     SET ID = 2
  3  /

1 row updated.

SQL> UPDATE CHILD
  2     SET PARENT_ID = PARENT_ID
  3  /
UPDATE CHILD
*
ERROR at line 1:
ORA-02291: integrity constraint (SCOTT.FK_CHILD) violated - parent key not
found


SQL>



SY.
...
Рейтинг: 0 / 0
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
    #40041479
ora20212021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
SY, спасибо Вам! Что-то сходу не догадался :-)
Выходит, что, если данные в столбце изменились - срабатывают только те ограничения, которые касаются этого столбца.

P.S. Попытался поискать в Инете инфу про то, в какой момент проверяются ключи и каким образом (думал, что, если данные в строке изменились, то срабатывают все ключи, какие есть). Но никакой инфы по этому поводу я не нашел.
...
Рейтинг: 0 / 0
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
    #40041488
Фотография Stax
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ora20212021
SY, спасибо Вам! Что-то сходу не догадался :-)
Выходит, что, если данные в столбце изменились - срабатывают только те ограничения, которые касаются этого столбца.

P.S. Попытался поискать в Инете инфу про то, в какой момент проверяются ключи и каким образом (думал, что, если данные в строке изменились, то срабатывают все ключи, какие есть). Но никакой инфы по этому поводу я не нашел.


залочте в соседней сессии фк таблицу и увидете как проверяет (ждет снятия блокировки)

.....
stax
...
Рейтинг: 0 / 0
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
    #40041742
ora20212021
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Stax, тот же результат. Если ты не меняешь столбец, на котором висит констрейнт, то проверка констрейнта не производится. Просто мне очень любопытно, когда именно Oracle его выполняет и откуда он видит, был изменён столбец или нет.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]