SSMS
 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. DBeaver
  2.   
  3. phpMyAdmin
  4.   
  5. Navicat
  6.   
  7. SSMS
  8.   
  9. MySQL Workbench
  10.   
  11. SQLyog
  1. show Създаване на команди за таблица в SQL Management Studio (2008)

  2. няма достъп до sql сървър разработчик sp1 ssis от ssms

  3. SQL Server 2012 Management Studio за Windows XP

  4. Прехвърляне FOR XML към Varchar(макс.)

  5. T-SQL Вмъкване в таблица, без да е необходимо да посочвате всяка колона