SSMS
 sql >> Cơ Sở Dữ Liệu >  >> Database Tools >> SSMS

Thiết lập một trình kích hoạt trên bảng để giới hạn số lượng các thao tác CHÈN, XÓA, CẬP NHẬT

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. Cách đặt (kết hợp) hai khóa chính trong một bảng

  2. Được chọn làm nạn nhân của deadlock trên Add () -> SaveChanges () đơn giản

  3. Tại sao chạy một truy vấn trên SQL Azure lại chậm hơn nhiều?

  4. Tại sao các điểm trong bộ đệm của tôi lại thuôn dài và không hình tròn trong SQL Server Management Studio - Kết quả không gian

  5. Làm cách nào để đặt thuộc tính Allow Nulls trong trình thiết kế bảng của SSMS thành luôn sai?