Изучаем sql



Pdf көрінісі
бет43/261
Дата28.07.2022
өлшемі1,6 Mb.
#147825
1   ...   39   40   41   42   43   44   45   46   ...   261
Байланысты:
Изучаем SQL ( PDFDrive )

VALUES (999, 'lasagna');
ERROR 1216 (23000): Cannot add or update a child row:
a foreign key constraint fails
В этом случае таблица 
favorite_food
считается 
дочерней 
(
child
), а таб
лица 
person
– 
родителем 
(
parent
), поскольку таблица 
favorite_food
за
висит от данных таблицы 
person
. Если требуется ввести данные в обе
таблицы, сначала следует создать строку в 
parent
, а затем уже можно
будет ввести данные в 
favorite_food
.
Ограничения внешнего ключа выполняются, только если табли
цы создаются с использованием механизма хранения InnoDB.
Механизмы хранения MySQL обсуждаются в главе 12.
Применение недопустимых значений
Столбец 
gender
таблицы 
person
может иметь только два значения: 
'M'
для мужчин и 
'F'
для женщин. Если по ошибке делается попытка за
дать любое другое значение, будет получен следующий ответ:


48
Глава 2. Создание и заполнение базы данных
mysql> 
UPDATE person

SET gender = 'Z'

WHERE person_id = 1;
Query OK, 1 row affected, 1 warning (0.01 sec)
Rows matched: 1 Changed: 1
Warnings: 1
Выражение 
update
не дало сбой, но было сформировано предупрежде
ние. Чтобы увидеть описание предупреждения, можно выполнить ко
манду 
show
warnings
(показать предупреждения):
mysql> 
SHOW WARNINGS;
++++
| Level | Code | Message |
++++
| Warning | 1265 | Data truncated for column 'gender' at row 1 |
++++
1 row in set (0.00 sec)
Это я назвал бы 
безопасной ошибкой 
(
soft error
), поскольку сервер MySQL
не забраковал выражение, но также и не произвел ожидаемых результа
тов. Чтобы решить эту проблему, сервер MySQL заполняет столбец 
gender
пустой строкой (
''
) – определенно не тем, что предполагалось получить.
Лично я предпочел бы, чтобы выражение было отвергнуто с сообщением
об ошибке, что и сделали бы большинство других серверов БД.


Достарыңызбен бөлісу:
1   ...   39   40   41   42   43   44   45   46   ...   261




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

    Басты бет