Мне нужно добавить столбец permissions, который определяется столбцами roles и access. Я пытаюсь вложить циклы if, но возникает ошибка
Код, который я использую, выглядит следующим образом
СОЗДАТЬ ТАБЛИЦУ EMPLOYEE (
empId INTEGER PRIMARY KEY,
username TEXT NOT NULL,
userrole TEXT NOT NULL,
roles TEXT NOT NULL,
доступы TEXT NOT NULL
);
INSERT INTO EMPLOYEE VALUES (0001, 'Clark','President', 'Admin','privileged');
INSERT INTO EMPLOYEE VALUES (0002, 'Dave','sales rep', 'Operational role','not privileged');
INSERT INTO EMPLOYEE VALUES (0003, 'Ava','finance manager', 'Managerial role','privileged');
SELECT * FROM EMPLOYEE;
ALTER TABLE EMPLOYEE
ADD COLUMN permissions VARCHAR;
DO
$do$
BEGIN
IF EMPLOYEE.roles='Admin' THEN
IF EMPLOYEE.accesses='privileged' THEN
SET permissions = 'GRANTED';
else
IF EMPLOYEE.roles='Operational role' THEN
IF EMPLOYEE.accesses='not privileged' THEN
SET permissions = 'GRANTED';
else
IF EMPLOYEE.roles='Managerial role' THEN
IF EMPLOYEE.accesses='not privileged' THEN
SET permissions = 'GRANTED';
else
SET permissions = 'REVOKED';
END IF;
END
$do$;
SELECT * FROM EMPLOYEE;
Нужно ли вам это:
SELECT *,
CASE WHEN (roles, accesses) IN ( ('Admin','privileged'),
('Operational role','not privileged'),
('Managerial role','not privileged') )
THEN 'GRANTED'
ELSE 'REVOKED'
END AS permissions
FROM employee;
?