标签: trigger

触发器在高度事务性的表上是否开始降低性能(或有时会失败)?

SQL Server 表触发器每秒可以处理多少事务?如果我有一个每秒插入 1,000 次的高度事务性表,该表上的插入触发器是否可靠地每次触发?

trigger sql-server sql-server-2016

0
推荐指数
1
解决办法
88
查看次数

“同时处理多行。减少并重试。” SQL Server Management Studio 中的错误

尝试从 SQL Server Management Studio v18.5 更新某些行时出现此错误:

消息 50000,级别 16,状态 1,过程 UPDATElimit,第 7 行 [批处理起始行 0] 要同时处理许多行。减少并重试。Msg 3609, Level 16, State 1, Line 1 事务在触发器中结束。该批次已中止。

我怎样才能绕过这个限制?

触发代码:

ALTER TRIGGER [dbo].[UPDATElimit] 
on [dbo].[table] 
FOR UPDATE 
AS 
BEGIN 
    IF (select count(*) from inserted) > 1000 
    BEGIN 
        RAISERROR('To many rows being processed at one. Reduce and try again.', 16, 1) 
        ROLLBACK 
    END 
END
Run Code Online (Sandbox Code Playgroud)

trigger sql-server t-sql

0
推荐指数
1
解决办法
95
查看次数

数十万行的触发器 updatedAt=NOW() 将不实际

updatedAt如果在 PG 9.6 中插入/更新了新数据,我将使用 SQL 触发器来更新列。

这是触发器将调用的函数

CREATE FUNCTION sp_updatedatstamp() RETURNS trigger AS $updatedat_stamp$
  BEGIN
    NEW."updatedAt" := now();
    RETURN NEW;
  END;
$updatedat_stamp$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)

这是触发脚本

create trigger tg_de_installment_cdcupdatedat before
insert or update
    on
    public.table for each row execute procedure sp_updatedatstamp()
Run Code Online (Sandbox Code Playgroud)

这是表定义

CREATE TABLE table (
    id serial NOT NULL,
    "type" text NULL,
    "transactionDate" timestamptz NULL,
    remark text NULL,
    "createdAt" timestamptz NULL,
    "updatedAt" timestamptz NULL,
    "deletedAt" timestamptz NULL,
    CONSTRAINT table_pkey PRIMARY KEY (id)
);
Run Code Online (Sandbox Code Playgroud)

此代码适用于小数据,直到应用程序执行需要 30 分钟的批量更新查询(将更新 100K+ …

postgresql trigger

0
推荐指数
1
解决办法
25
查看次数

删除后触发执行顺序

假设我有两张表,一张名为ParentTable,另一张名为ChildTable,具有一对多关系,其中一个父项可能有多个子项。

我正在创建一个AFTER DELETE触发器ChildTable。在该触发器中,我正在检查一个值ParentTable(如果存在),如下所示:

-- ...
FROM deleted d
JOIN ParentTable pt ON d.FK_Parent = pt.ID
WHERE pt.Foo = 'bar'
Run Code Online (Sandbox Code Playgroud)
  1. 如果我先从 删除ChildTable,然后从 删除ParentTableAFTER DELETE触发器是在删除行之前还是之后ParentTable触发?

    A。这两个DELETE语句通常位于显式事务中,因为我使用的是实体框架。

  2. 如果我将外键设置为ChildTableCASCADE DELETE然后从ParentTableonly 中删除,当触发器触发时,中的行ParentTable仍然可以访问吗AFTER DELETE

trigger sql-server delete sql-server-2016

0
推荐指数
1
解决办法
1096
查看次数

EVENTDATA() 函数在 SQL Server 中仅给出空值

我正在尝试使用触发器捕获登录时间EVENTDATA()。但它只为所有类型的事件提供 Null 值。有人可以帮我解决这个问题吗?这是我的触发器

CREATE TRIGGER trgBlockIP
    ON ALL SERVER
    FOR LOGON
    AS
    BEGIN
       DECLARE @clientip NVARCHAR(15);
       SET @clientip = (
                          SELECT
                             EVENTDATA().value(
                                                 '(/EVENT_INSTANCE/Clienthost)[1]',
                                                 'NVARCHAR(15)'
                                              )
                       );
       IF EXISTS (
                    SELECT ip
                    FROM   master.dbo.BLockedIPAddresses
                    WHERE  ip = @clientip
                 )
       BEGIN
          PRINT 'Your IP Address is blocked';
          ROLLBACK;
       END;
       ELSE
       BEGIN
          DECLARE @Range VARCHAR(15);
          SELECT
             @Range = SUBSTRING(
                                  @clientip,
                                  1,
                                  LEN(@clientip)
                                  - CHARINDEX('.', REVERSE(@clientip))
                               ) + '.*';
          IF EXISTS (
                       SELECT ip
                       FROM   master.dbo.BLockedIPAddresses
                       WHERE  ip = @Range
                    )
          BEGIN …
Run Code Online (Sandbox Code Playgroud)

trigger sql-server-2008 sql-server t-sql functions

0
推荐指数
1
解决办法
80
查看次数

是否可以在 SQL Server 中的表同义词上创建触发器?

标题说明(询问)这一切。是否可以在 SQL Server(2005 或更高版本)中的表同义词上创建触发器?

trigger sql-server

-1
推荐指数
1
解决办法
1775
查看次数