我在Table1和Table2上创建了一个索引视图View1,并在使用View1的Table1上创建了instead of trigger和after trigger。当我在instead of trigger和after trigger上使用这个视图时,View1数据似乎没有改变。但是当我在after触发器上使用这个视图时,我想使用带有新数据的View1。我该怎么做呢。应该注意是,在使用索引视图时,我使用了with Noexpand提示(当在SQL Server 2008 R2操作中不使用with noexpand提示时,例如没有索引视图)。
我想为insert和update操作定义instead of,但为delete操作定义after。有可能吗?或者,我需要为此编写一个额外的触发器吗?例如,不能删除任何行。 CREATE TRIGGER test_trigger ON my_table
instead of INSERT,UPDATE for DELETE
AS
BEGIN
.......
END
我正在尝试在sqlite中实现与“equivalent CURRENT_TIMESTAMP”MySQL特性相当的功能。我的想法是用这样的触发器:
CREATE TRIGGER last_update_trigger
AFTER UPDATE
ON mytable
FOR EACH ROW
BEGIN
UPDATE mytable SET last_update = CURRENT_TIMESTAMP WHERE id = old.id;
END
但这有个问题。每次在此表的记录上发生更新时,触发器都会在同一记录上触发一个新的更新。这应该会一次又一次触发触发器,从而导致无限循环的更新。
这真的会发
我有一个表ORDER_TEST,其中包含列№、STATUS和DATE_STATUS。 №对于每一行(主键)都是唯一的。 我想创建一个触发器,它将设置(更新) STATUS被更新后的STATUS_TIME。 我试着用 CREATE TRIGGER AFTER_UPDATE_STATUS
ON ORDER_TEST
AFTER UPDATE
AS
UPDATE ORDER_TEST
SET DATE_STATUS = {fn now()}
FROM ORDER_TEST
JOIN INSERTED ON ORDER_TEST.[№] = inserted.[№]
我有一个情况,我有一个下面的表格。
create table Bulk_Data
(
id int identity(1,1),
UserName varchar(100) not null default 'default value ',
iPartitionID int null
)
另外,我在Bulk_Data上有一个插入触发器。
create trigger dbo.Bulk_Data_IU on Bulk_Data
AFTER INSERT
AS Begin
Merge Bulk_Data p1
我希望将列的内容复制到同一表中的另一列中。因此,我创建了这个触发器:
ALTER TRIGGER [dbo].[kennscht_copy_to_prodverpt]
ON [dbo].[Stammdaten]
AFTER INSERT
AS
UPDATE Stammdaten
SET PRODVERPT = (SELECT KENNSCHT FROM INSERTED)
WHERE SNR = (SELECT SNR FROM INSERTED);
但是,当我使用表上的更新将KENNSCHT更新为不同的值时,PRODVERPT也不会被更新。现在,您可能会说,这是因为触发器在AFTER INS
我在我们的一个数据库上设置了一个增量为1的Sequence对象,我们目前将其用作两个表的主键,以确保这两个表的唯一性。这是通过对表的以下约束来控制的:
ADD CONSTRAINT SEQ_MySequence DEFAULT (NEXT VALUE FOR dbo.SEQ_sID) FOR ID;
我们希望防止用户手动向该列中插入数据,但我们找不到一种可靠的方法来做到这一点。触发器似乎是显而易见的选择;然而,AFTER INSERT触发器在触发约束之后执行,因此以下代码不起作用:
CREATE TRIGGER BlockInsert ON MyTable
AFTER INSERT
AS
我有两个触发器After Insert或Update和Instead of Insert。after触发器似乎没有运行或发送正确的数据。
我已经验证了Z_UpdateStageTable存储过程和Instead of Insert触发器的操作是否正确。删除Instead of Insert触发器没有任何影响。After Insert,Update触发器在同一时间工作正常,我没有对它做任何更改。我尝试删除和添加它,但它仍然不能运行或具有正确的数据。
有什么想法吗?
而不是插入:
ALTER TRIGGER [DeleteExistingFilter]
ON [dbo].[Z_Mobile
我需要重建触发器上的以下部分:
{ FOR | AFTER | INSTEAD OF }
因此,如果触发器具有"instead of“,则可能为0或1:
SELECT
is_instead_of_trigger
FROM sys.triggers
Where object_id = Object_Id ('')
如何解决特定触发器是否具有for或after?
我试图通过此代码防止列上重复的值,但得到了语法错误:
如果存在(从第1行的tbl_baivietsp t‘中选择*)
DELIMITER $$
CREATE TRIGGER key_as_linksp ON tbl_baivietsp
AFTER INSERT
AS
if exists ( select * from tbl_baivietsp t inner join INSERTED i on i.LINK_SP
LIKE CONCAT('%', t.LINK_SP ,'%'))
begin
rollback TRANSACTION
RAI
在删除table2中的一行后,是否可以从table1中删除(从table1中删除了一个引用)?(如果我同时从客户中删除一个CustomerID,以删除他所下的订单(OrderID))
CREATE TRIGGER DelBilete
ON Curse
AFTER DELETE
AS
BEGIN
DELETE FROM Bilete
WHERE IDCursa IN (SELECT IDCursa FROM Curse)
END
我创建了一个触发器,该触发器应该在对表进行插入之后更新同一个表a中的另一个值。我确实得到了我想要的结果,但是当我问我的老师这是否正确时,他回答说这个触发器更新了“所有”表(?)因此是不正确的。他不会再解释更多了(他就是那种老师…)。有谁能理解他的意思吗?不是寻找正确的代码,只是对我可能误解的东西的解释。
CREATE TRIGGER setDate
ON Loans
AFTER INSERT
AS
BEGIN
UPDATE Loans
set date = GETDATE()
END;
我正在寻找一种优雅的解决方案:
我已经创建了一个触发器函数,每当在supply上插入或更新一行时,它就会用一些细节行的总和更新表warehouse_supplies。
PostgreSQL insert or update语法允许我为插入和更新条件共享相同的sync_supply_stock()函数。
但是,当我试图将after delete条件连接到函数时,它不能被重用(尽管它在逻辑上是有效的),因为返回的对象必须是old而不是new。
-- The function I want to use for the 3 conditions (insert, update,
我有两个表orders和products,这两个表都有一个带有值的数量列。我正在尝试使用after触发器从orders表的quantity列中减去products表中的quantity列。触发器将在订单上触发,table.This是我到目前为止所拥有的:
delimiter //
Create Trigger OQminusPQ
After Insert ON orders
For Each Row
Begin
Select products.Quantity - orders.Quantity
end
//
delimiter ;
错误:不允许我从触
两张表:
Table A
id bigint; -- Table A primary key
Table B
id bigint; -- Table B primary key
a_id bigint; -- Table A foreign key
在Table A insert上,我希望确保Table B有用于Table A和回滚的条目(如果没有)。
在PostgreSQL中,在AFTER INSERT触发器上这样做是最好的/唯一的方法吗?
这种关系有名字吗?
谢谢。
我试图在VIEW上添加PostgreSQL 9.6中的触发器。
这是我的看法:
CREATE VIEW names AS
SELECT one.name AS name_one, two.name AS name_two, three.name AS name_three
FROM table_one one
LEFT JOIN table_two two ON one.id = two.id
LEFT JOIN table_three three ON two.id = three.id;
这是我的触发函数:
CREATE OR REPLACE FUNCTION notify_name_ch
我目前正在为我的数据库编写一个触发器,包括表employee和列dno。在编写触发器之前,我指定dno的默认值为1,而在触发器中,如果要删除dno中的值,则希望强制执行默认值。
这就是我到目前为止所拥有的。对我来说这似乎很简单,但我觉得我错过了很多。
create trigger empdeptfk_delete
on employee
after delete as
begin
update employee
set dno = 1
end
有什么方法我可以写set default value而不是set dno = 1吗?此外,如果这有帮助的话,我将使用Server 2012。谢谢!
我有一个触发器,但它没有将记录插入目标表。create or replace trigger ins_det_trig1 after insert on Table_a declare pragma autonomous_transaction;- begin insert insert inf_det select a.loc_id,a.genre_id,to_char(a.emp_date,'yyyy-mm-dd'),a.san_seq from Table_b a,Table_a b where b.emp_date=a.emp_date和b.genre_id=a.gen
删除碟子时应触发触发器。所有含有这道菜的订单都将被删除。
到目前为止,我有这样的剧本:
create trigger OnDishDeleted
on Dish
after delete as
begin
delete from Dish_Order
where Dish_ID = (select Dish_ID from deleted)
end
当我试图删除一个菜时,我会得到一个错误:
DELETE语句与引用约束"FK_Dish_Order_Dish“冲突。冲突发生在数据库"davay_rabotai2“、表"dbo.Dish_Orde
我试图忽略那些薪水超过5000的员工的删除。我在Employee表上使用了一个Employee触发器。如果已删除的员工的薪资高于5000,则将该行重新插入Employee表。
CREATE TRIGGER T1 ON Employee
AFTER DELETE
AS
INSERT INTO Employee
SELECT *
FROM DELETED D
WHERE D.salary > 5000
有没有办法做到这一点,而不重新插入排?如何使用INSTEAD OF触发器代替AFTER DELETE
我创建了一个触发器,在insert之后必须更新插入的表:
alter trigger DispararInsertFactura1
on FacturaCabecera
after insert
as
BEGIN
Declare @numfac int;
select @numfac = NumFactura
FROM FacturaCabecera
WHERE id = (SELECT max(id) from FacturaCabecera);
update
我有一个这样的触发器:
IF ( value > new.value ) THEN
...
END IF
它将以AFTER INSERT方式执行。我需要在插入时传递value (它是一个数字),因为我在触发器的条件中使用了它。你知道我怎么才能通过吗?
注意,目前它被硬编码到像IF ( 5 > new.value ) THEN这样的触发器中。我要做的就是在插入的时候动态地传递这个5。
我有一个使用3个表的数据集。
例如
Select *
FROM Apples as 1
INNER JOIN Oranges as 2
ON (1.ID = 2.ID)
INNER JOIN Bananas as 3
ON (1.ID = 3.ID)
我正在尝试从这个数据集创建一个触发器。每当更新、删除或插入此数据集中的任何列时,我都需要为此创建一个审计跟踪。
请记住,我不能在服务器上创建任何表。因此,在上面的查询之外创建一个实际的表是不可行的。所以我最初的想法是为这个数据集创建一个CTE。
然后创建触发器,如下所示:
CREATE TRIGGER [schema_name.]trigge
我有三个表:organization、organization_teams和org_users。这里的organization_teams是从organization继承的。因此,假设在organizations_teams中添加了一条记录,它将获得organization表id作为organization_teams中id列的值。
org_users在organization的id列上有外键。现在,当我尝试在org_users中插入数据时,出现如下错误
insert or update on table "org_users" violates foreign key con
我的更新触发器有问题
ALTER TRIGGER tr_MyTable
ON MyTable
AFTER UPDATE
AS
BEGIN TRAN
SET NOCOUNT ON;
If Update(column)
Begin
DELETE FROM MyTable WHERE <condition>
End
SET NOCOUNT OFF
COMMIT TRAN
GO
我正在尝试删除MyTable中当前已更新的行(从MayTable中)。但是当我运行触发器时,行不会被删除。是否不能删除update触
我在数据库中有两个表,我想用触发器在cascade上删除。我过去常常在关系中使用级联删除,但在这种情况下,我有更多的表,SQL Server不允许我在关系中设置级联删除,因为这会创建一个循环。
所以我想创建一个触发器来删除表中我不能在关系中设置级联删除的寄存器。
我使用这个触发器:
CREATE TRIGGER trg_myTrigger
ON Componentes
AFTER DELETE
AS
BEGIN
-- SET NOCOUNT ON added to prevent extra result sets from
-- interfering wit