MySQL 将用户插入适当 table 的过程

MySQL PROCEDURE which will insert user into appropriate table

我在创建程序时遇到问题,有人可以告诉我我的方向是否正确吗?请告诉我哪里出了问题。

感谢您的帮助。

CREATE TABLE IF NOT EXISTS Uzytkownicy(
    idUzytkownika INT PRIMARY KEY AUTO_INCREMENT,
    login VARCHAR(50) NOT NULL,
    haslo VARCHAR(64) NOT NULL,
    rola varchar(5)
);

CREATE TABLE IF NOT EXISTS Administratorzy(
    idUzytkownika INT PRIMARY KEY AUTO_INCREMENT,
    login VARCHAR(50) NOT NULL,
    haslo VARCHAR(64) NOT NULL,
    rola varchar(5)
);

CREATE PROCEDURE `ins`
(
    in `P_idUzytkownik` INT,
    in `P_login` varchar(50),
    in `P_haslo` varchar(64),
    in `P_rola` varchar(5)
)
BEGIN
    IF `P_rola` ="Admin"
    THEN
    INSERT INTO `Administratorzy`
    VALUES(`P_idUzytkownik`,`P_login`,`P_haslo`,`P_rola`)
    ELSE 
    INSERT INTO `Uzytkownicy`
    VALUES(`P_idUzytkownik`,`P_login`,`P_haslo`,`P_rola`)
END 

https://dev.mysql.com/doc/refman/5.7/en/if.html

您缺少一些分号。尝试:

IF `P_rola` ="Admin"
THEN
INSERT INTO `Administratorzy`
VALUES(`P_idUzytkownik`,`P_login`,`P_haslo`,`P_rola`);
ELSE 
INSERT INTO `Uzytkownicy`
VALUES(`P_idUzytkownik`,`P_login`,`P_haslo`,`P_rola`);

话虽这么说,为什么不将所有用户都放在一个 table 中,并让第 5 个字段包含 AdministratorzyUzytkownicy?当用户从 U 切换到 A 时会发生什么。您必须删除和插入记录,而不仅仅是执行 UPDATE。当您拥有一种新型角色时会发生什么?一个新的 table?