MySQL PROCEDURE将用户插入适当的表

时间:2016-06-02 20:47:49

标签: mysql database phpmyadmin

我有创建程序的问题,有人可以告诉我,我是否朝着正确的方向前进?请告诉我出了什么问题。

感谢您的帮助。

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 

1 个答案:

答案 0 :(得分:0)

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`);

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