Изучаем sql



Pdf көрінісі
бет224/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   220   221   222   223   224   225   226   227   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

UPDATE product
> SET product_type_cd = 'XYZ'
> WHERE product_type_cd = 'LOAN';
ERROR 1216 (23000): Cannot add or update a child row: a foreign key constraint
fails
Изза ограничения внешнего ключа на столбец 
product.product_type_cd
сервер не разрешает провести такое обновление, поскольку в таблице
product_type
в столбце 
product_type_cd
нет строки со значением 
'XYZ'
. Та
ким образом, ограничение внешнего ключа не позволяет изменить до
чернюю строку, если в родительской нет соответствующего значения.
Однако что произошло бы, попробуй мы изменить значение 
родитель
ской 
строки таблицы 
product_type
на 
'XYZ'
? Вот выражение 
update
, реа
лизующее попытку изменить тип счета 
LOAN
на 
XYZ
:
mysql> 
UPDATE product_type
> SET product_type_cd = 'XYZ'
> WHERE product_type_cd = 'LOAN';
ERROR 1217 (23000): Cannot delete or update a parent row: a foreign 
key constraint
fails
Опять формируется ошибка. На этот раз потому, что в таблице 
product
есть дочерние строки, столбец 
product_type_cd
которых содержит зна
чение 
'LOAN'
. Это поведение ограничений внешнего ключа по умолча
нию, но оно не единственное возможное. Можно указать серверу рас
пространять это изменение на все дочерние строки, сохраняя, таким
образом, целостность данных. Эта разновидность ограничения внеш
него ключа, известная как 
каскадное обновление 
(
cascading update
),
может быть установлена путем удаления существующего внешнего
ключа и добавления нового, включающего блок 
on
update
cascade
:
mysql> 
ALTER TABLE product
> DROP FOREIGN KEY fk_product_type_cd;
Query OK, 8 rows affected (0.02 sec)


Ограничения


Достарыңызбен бөлісу:
1   ...   220   221   222   223   224   225   226   227   ...   261




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет