在mysql存储过程中执行unsigned参数的正确方法是什么

Cri*_*ero 3 mysql stored-procedures

我有一个从数据库中所有表中删除用户信息的过程。

CREATE PROCEDURE `unrollme_version3`.`del_user` (in v_user_id int(10))
BEGIN
START TRANSACTION; 
    DELETE FROM user_table1 WHERE `user_id` = v_user_id;
    DELETE FROM user_table2 WHERE `user_id` = v_user_id;
    DELETE FROM user_table3 WHERE `user_id` = v_user_id;
COMMIT;
END
Run Code Online (Sandbox Code Playgroud)

我想以某种方式使输入变量仅是无符号的,以匹配数据库结构的设置方式。这可能吗,什么是最佳实践?

fan*_*nts 5

只要加上这个词unsigned。我删除了(10)正义只是因为它是无关紧要的。它仅描述了应显示的位数,但始终为4字节的整数。

CREATE PROCEDURE `unrollme_version3`.`del_user` (in v_user_id int unsigned)
BEGIN
START TRANSACTION; 
    DELETE FROM user_table1 WHERE `user_id` = v_user_id;
    DELETE FROM user_table2 WHERE `user_id` = v_user_id;
    DELETE FROM user_table3 WHERE `user_id` = v_user_id;
COMMIT;
END
Run Code Online (Sandbox Code Playgroud)

您可以通过执行以下操作来强制抛出错误而不是警告

SET sql_mode='STRICT_ALL_TABLES';
Run Code Online (Sandbox Code Playgroud)

有关更多信息,请参见手册。