Гость
Форумы / Oracle [игнор отключен] [закрыт для гостей] / Изменение столбца без ограничений целостности - проверяются ли они при выполнении? / 5 сообщений из 5, страница 1 из 1
03.02.2021, 16:46
    #40041267
ora20212021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
При выполнении update'а таблицы - будут ли проверяться ограничения целостности, если изменялись только столбцы, на которых ограничений целостности - нет? И вообще - возможно ли как-то проверить, что в результате выполнения оператора ограничения целостности - проверялись?
...
Рейтинг: 0 / 0
03.02.2021, 19:52
    #40041343
SY
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
04.02.2021, 11:12
    #40041479
ora20212021
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Изменение столбца без ограничений целостности - проверяются ли они при выполнении?
SY, спасибо Вам! Что-то сходу не догадался :-)
Выходит, что, если данные в столбце изменились - срабатывают только те ограничения, которые касаются этого столбца.

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

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


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

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


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