Код: Выделить всё
SET SQL DIALECT 3;
SET NAMES NONE;
CREATE TABLE USERS2 (
USER_NAME USER_NAME /* USER_NAME = VARCHAR(128) */,
SYS_USER_NAME USER_NAME /* USER_NAME = VARCHAR(128) */,
GROUP_NAME USER_NAME /* USER_NAME = VARCHAR(128) */,
UID UID /* UID = INTEGER */,
GID GID /* GID = INTEGER */,
PASSWD PASSWD /* PASSWD = VARCHAR(32) */,
PRIVILEGE PRIVILEGE /* PRIVILEGE = INTEGER */,
COMMENT COMMENT /* COMMENT = BLOB SUB_TYPE 1 SEGMENT SIZE 80 */,
FIRST_NAME NAME_PART /* NAME_PART = VARCHAR(32) DEFAULT _UNICODE_FSS '' */,
MIDDLE_NAME NAME_PART /* NAME_PART = VARCHAR(32) DEFAULT _UNICODE_FSS '' */,
LAST_NAME NAME_PART /* NAME_PART = VARCHAR(32) DEFAULT _UNICODE_FSS '' */,
FULL_NAME COMPUTED BY (first_name || _UNICODE_FSS ' ' || middle_name || _UNICODE_FSS ' ' || last_name )
);
COMMIT;
INSERT INTO USERS2 (USER_NAME, SYS_USER_NAME, GROUP_NAME, UID, GID, PASSWD, PRIVILEGE, COMMENT , FIRST_NAME , MIDDLE_NAME, LAST_NAME)
SELECT USER_NAME, SYS_USER_NAME, GROUP_NAME, UID, GID, PASSWD, PRIVILEGE, COMMENT , FIRST_NAME , MIDDLE_NAME, LAST_NAME
FROM USERS;
COMMIT;
DROP TABLE USERS;
create unique index user_name_index2 ON users2 (user_name);
CREATE view USERS as
SELECT * FROM USERS2 WHERE USER='' or USER ='SYSDBA' or USER = USER_NAME;
GRANT SELECT ON USERS TO PUBLIC;
GRANT update (PASSWD, GROUP_NAME, UID, GID, FIRST_NAME, MIDDLE_NAME, LAST_NAME) ON USERS TO PUBLIC;
FB - 1.5.3.