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. SQL सर्वर तालिका पर निर्भर सभी ऑब्जेक्ट्स को स्क्रिप्ट करना चाहते हैं

  2. SQL सर्वर 2008 - लॉग के बिना mdf संलग्न करें - ऑपरेटिंग सिस्टम त्रुटि 5:5 (प्रवेश निषेध है।)

  3. SSMS योजनाओं से खराब कार्डिनैलिटी अनुमान – redux

  4. SQL सर्वर 2012 त्रुटि:ऑब्जेक्ट संदर्भ किसी ऑब्जेक्ट की आवृत्ति पर सेट नहीं है

  5. मैं संग्रहित प्रक्रिया के लिए निष्पादन योजना कैसे प्रदर्शित कर सकता हूं?