我的问题有点理论性,因为我没有任何具体的工作例子。但我觉得回答是值得的。
在Server中编写insert-触发器的正确方法是什么?
假设我创建了这样一个触发器(或多或少是伪代码)
CREATE TRIGGER MY_TRIGGER
ON MY_TABLE
FOR INSERT AS
DECLARE @myVariable;
DECLARE InsertedRows CURSOR FAST_FORWARD FOR SELECT A_COLUMN FROM INSERTED;
OPEN InsertedRows;
FETCH NEX
我有一个SQLite数据库,我创建了一个唯一的索引,如下所示:
CREATE UNIQUE INDEX [my_unique_idx] ON [my_table] ([field1], [field2]);
现在,在我的程序中,我想在my_table中插入一行,如果它被插入,我需要在另一个“从属”表中插入其他行。另一方面,如果行被更新,我不需要做任何事情。换句话说:
if ( query.exec(
"insert or replace into my_unique_idx"
" (field1, field2, other_field)"
当数据插入NFI时,我希望将数据插入到表sn中--我已经将下面的触发器添加到我的数据库中,但是当插入到NFI中时,数据不会插入到sn中。
我需要更改什么才能成功运行?
CREATE TRIGGER UpdateData ON nfi
FOR INSERT
AS
INSERT INTO SN
(esn,ern)
SELECT
esn,ern
FROM inserted
where esn not in (select esn from nfi)
go
我正在使用Hibernate与MSSQL服务器一起编写与现有数据库集成的软件。我需要插入的表上有一个instead of insert触发器,它会破坏@@Identity,这意味着在Hibernate的save中,我无法获得插入行的id。我无法控制触发器(不能修改)。我看到了的问题,但它涉及的程序,我的触发器没有,所以我认为我的问题是足够不同的。我不能发布整个触发器,但希望我能够发布足够多的帖子,让它明白这一点:
CREATE TRIGGER TrigName ON TableName
INSTEAD OF INSERT
AS
SET XACT_ABORT ON
BEGIN TRANSACTI
在阅读了大量与上述主题相关的文章和许多答案之后,我仍然想知道SQL Server数据库引擎在以下示例中是如何工作的:
让我们假设我们有一个名为t3的表:
create table t3 (a int , b int);
create index test on t3 (a);
以及如下查询:
INSERT INTO T3
SELECT -86,-86
WHERE NOT EXISTS (SELECT 1 FROM t3 where t3.a=-86);
查询在验证基于列"a“的行不存在之后,在表t3中插入一行。
许多文章和答案表明,使用上述查询,不可能插入一行两次。
为了执行上述查询,
在输入标题文本时,不确定这是否已经被问到了原因,可能重复给出的建议不匹配。
我的一位同事问,是否可以用存储过程(SP)完全替换DML触发器的功能。一开始听起来有点奇怪,但可能是因为触发器也是一种特殊类型的SP,但不能显式调用。
我的意思是,例如:一个名为AFTER INSERT Trigger的trg_insert1定义在tbl1上,它确实在tbl2中更新了一些数据,如下所示(以Server为例,但问题并不是特定于任何DB)
create trigger trg_insert1
after insert on tbl1
foreach row
begin
update tbl2 set s
我在SQL Server2008数据库的一个表上使用了以下触发器。它在递归,所以我需要停止它。
在我插入或更新一条记录之后,我尝试简单地更新该表上的单个字段。
触发器是这样的:
ALTER TRIGGER [dbo].[tblMediaAfterInsertOrUpdate]
ON [dbo].[tblMedia]
BEFORE INSERT, UPDATE
AS
BEGIN
SET NOCOUNT ON
DECLARE @IdMedia INTEGER,
@NewSubject NVARCHAR(200)
SELECT @I
我在两个不同的SqlServer服务器(一个是SQL2000,另一个是2008)中有相同的表。
我使用的是sql server management studio。
我希望每次对SqlServer 2000表(Table_1)中的表执行插入操作时,都会触发一个触发器,并且该记录也会被插入到SqlServer 2008表(也就是Table_1)中的同一个表中。
sql server 2008被定义为链接服务器,并且可以使用sql server management studio从2000db连接对2008db运行查询和执行插入。
触发器定义如下:
ALTER TRIGGER [dbo].[trg
所以我看到SQL有一些表,这些表保存了人们可以引用的表中新插入和删除的数据。我没有注意到这样一个用于更新数据的表。我目前正在使用触发器,并且我需要将触发器应用于更新。我该怎么做?
USE [examene]
GO
/****** Object: Trigger [dbo].[trig1] Script Date: 6/8/2013 6:48:26 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
ALTER trigger [dbo].[trig1] on [dbo].[participari]
after inse
我想在插入事件之后创建一个触发器,但我需要插入的数据,以便在PostgreSQL中为触发器注册到一个新表中。
在Server中,我从Inserted或deleted伪表捕获这些值,但这些表是否也存在于PostgreSQL中?或者我能做些什么?
这是我的触发码
CREATE TRIGGER tri_compago
AFTER INSERT
ON matricula
FOR EACH ROW
EXECUTE PROCEDURE fn_insCompPago();
CREATE OR REPLACE FUNCTION fn_insCompPago()
RETURNS trigg