sql >> データベース >  >> Database Tools >> SSMS

テーブルにトリガーを設定して、INSERT、DELETE、UPDATE操作の数を制限します

    create table dbo.targetTable
    (
        id int,
        colA varchar(10)
    );
    go
    create or alter trigger dbo.DMLxTimes on dbo.targetTable
    for insert, update, delete
    as
    begin
        /*
            --old days..
            IF @@ROWCOUNT > 5
            begin
                rollback;
            end
        --*/
    
        declare @maxrows int = 5; --maximum number of rows allowed per dml action
    
        if 
        (select count(*) from inserted) > @maxrows
        or
        (select count(*) from deleted) > @maxrows
        begin
            rollback;
        end
    end
    go
    
    insert into dbo.targetTable(id, colA)
    values (0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'); --5 rows inserted
    go
    insert into dbo.targetTable(id, colA)
    values (0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'),(0, 'a'); --6 rows inserted ... error
    go
    insert into dbo.targetTable(id, colA)
    values (0, 'a'),(0, 'a'); --2 rows inserted
    go
    
    --all updated, error
    update dbo.targetTable
    set colA = colA;
    go
    
    --ok
    update top(5) dbo.targetTable
    set colA = colA;
    go
    
    delete top (4) from dbo.targetTable;
    go
    
    --ok
    update top(15) dbo.targetTable
    set colA = colA;
    go
    



    1. phpMyAdminからログアウトしますか?

    2. メモリのphpmyadminインポートエラー

    3. phpmyadmin:関数を作成します

    4. ローカルのphpmyadminでリモートのmysqlデータベースをセットアップ/マッピングする方法