Транзакция MySQL

Как я могу начать транзакцию, если в инструкциях SQL есть ошибки, система автоматически откатит изменения?

ve следующий оператор SQL

START TRANSACTION;

BEGIN;

INSERT INTO `users`(id,name,gender,email,age)
    VALUES(11121,'sss',0,'ssss',22);

INSERT INTO `teachers`(`UserId`,`teachingSubject`)
    VALUES(11121,300);

COMMIT;

Это неОткат т когда второй оператор счетчик ошибка. Зачем? 'teachingSubject» это TINYINT (2), второй оператор выйдет за пределы своего диапазона. Я хочу откатить все заявления.

Below is my procedure.

mysql> source d:\s.sql
Query OK, 0 rows affected (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

Query OK, 1 row affected (0.00 sec)

ERROR 1264 (22003): Out of range value for column 'te
Query OK, 0 rows affected (0.09 sec)

mysql> SELECT * FROM teachers
    -> ;
+--------+-----------------+
| UserId | teachingSubject |
+--------+-----------------+
|  11111 |               1 |
|  11112 |               9 |
|  11113 |             100 |
+--------+-----------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM users;
+-------+--------+--------+----------------+------+
| id    | name   | gender | email          | age  |
+-------+--------+--------+----------------+------+
| 11111 | Killer |       | [email protected]       |   12 |
| 11112 | sss    |        | ssss           |   22 |
| 11113 | sss    |        | ssss           |   22 |
| 11114 | sss    |        | ssss           |   22 |
| 11115 | sss    |        | ssss           |   22 |
| 11116 | sss    |        | ssss           |   22 |
| 11117 | sss    |        | ssss           |   22 |
| 11118 | sss    |        | ssss           |   22 |
| 11119 | sss    |        | ssss           |   22 |
| 11120 | sss    |        | ssss           |   22 |
| 11121 | sss    |        | ssss           |   22 |
| 12345 | Sefler |       | [email protected] |   12 |
+-------+--------+--------+----------------+------+
12 rows in set (0.00 sec)

Нет записи с id = 11121 в таблице учителей, но таблица пользователей делает.

Ответы на вопрос(1)

Решение Вопроса

когда int переполняется. Вместо этогоЯ просто обрежу его до максимально возможного значения. В случае неподписанного крошечногос 255. Но никакая фактическая ошибка не будет выдана.

Ваш ответ на вопрос