| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101 | /** * Database schema required by \yii\rbac\DbManager. * * @author Qiang Xue <qiang.xue@gmail.com> * @author Alexander Kochetov <creocoder@gmail.com> * @link http://www.yiiframework.com/ * @copyright 2008 Yii Software LLC * @license http://www.yiiframework.com/license/ * @since 2.0 */if object_id('[auth_assignment]', 'U') is not null    drop table [auth_assignment];if object_id('[auth_item_child]', 'U') is not null    drop table [auth_item_child];if object_id('[auth_item]', 'U') is not null    drop table [auth_item];if object_id('[auth_rule]', 'U') is not null    drop table [auth_rule];create table [auth_rule](    [name]  varchar(64) not null,    [data]  blob,    [created_at]           integer,    [updated_at]           integer,    primary key ([name]));create table [auth_item](   [name]                 varchar(64) not null,   [type]                 smallint not null,   [description]          text,   [rule_name]            varchar(64),   [data]                 blob,   [created_at]           integer,   [updated_at]           integer,   primary key ([name]),   foreign key ([rule_name]) references [auth_rule] ([name]));create index [idx-auth_item-type] on [auth_item] ([type]);create table [auth_item_child](   [parent]               varchar(64) not null,   [child]                varchar(64) not null,   primary key ([parent],[child]),   foreign key ([parent]) references [auth_item] ([name]),   foreign key ([child]) references [auth_item] ([name]));create table [auth_assignment](   [item_name]            varchar(64) not null,   [user_id]              varchar(64) not null,   [created_at]           integer,   primary key ([item_name], [user_id]),   foreign key ([item_name]) references [auth_item] ([name]) on delete cascade on update cascade);create index [auth_assignment_user_id_idx] on [auth_assignment] ([user_id]);CREATE TRIGGER dbo.trigger_auth_item_child    ON dbo.[auth_item]    INSTEAD OF DELETE, UPDATE    AS    DECLARE @old_name VARCHAR (64) = (SELECT name FROM deleted)    DECLARE @new_name VARCHAR (64) = (SELECT name FROM inserted)    BEGIN        IF COLUMNS_UPDATED() > 0        BEGIN            IF @old_name <> @new_name                BEGIN                    ALTER TABLE auth_item_child NOCHECK CONSTRAINT FK__auth_item__child;                    UPDATE auth_item_child SET child = @new_name WHERE child = @old_name;                END                UPDATE auth_item                SET name = (SELECT name FROM inserted),                type = (SELECT type FROM inserted),                description = (SELECT description FROM inserted),                rule_name = (SELECT rule_name FROM inserted),                data = (SELECT data FROM inserted),                created_at = (SELECT created_at FROM inserted),                updated_at = (SELECT updated_at FROM inserted)                WHERE name IN (SELECT name FROM deleted)                IF @old_name <> @new_name                    BEGIN                        ALTER TABLE auth_item_child CHECK CONSTRAINT FK__auth_item__child;                    END                END                ELSE                    BEGIN                        DELETE FROM dbo.[auth_item_child] WHERE parent IN (SELECT name FROM deleted) OR child IN (SELECT name FROM deleted);                        DELETE FROM dbo.[auth_item] WHERE name IN (SELECT name FROM deleted);                    END        END;
 |