我的数据库用户有四个字段:名称,客户端, ID ,时间即可。 客户端是一个整数(0-99)。如何在插入期间编写一个能够从用户(最新根据时间)找到最新用户的触发器以及客户端此用户等于插入用户的客户,然后我想回滚
我试过这样:
CREATE TRIGGER DoubledData ON Users
FOR INSERT
AS
DECLARE @client DECIMAL(2)
DECLARE @client_old DECIMAL(2)
DECLARE @name Varchar(50)
SELECT @name = Name from inserted
SELECT @client = Client from inserted
//This doesn't work, "Syntax error near Select":
SELECT @client_old = Select top(1) Client from Users where Name like @name order by Time desc;
IF @client = @client_old
BEGIN
ROLLBACK
END
问题是我可以为一个用户为客户分配相同的值,但他们不能一个接一个(例如对于客户这个订单是正确的1-2-3-1-3 - >订单是重要,但这不是正确的:1-2-3-3 - >连续第二次出现'连续后需要回滚)
我正在使用MS SQL
[编辑] 我发现我可以在没有选择顶部(1)之类的情况下执行它:
SELECT @client_old = Client from Users where Name like @name order by Time desc;
但触发器不会执行 insert
答案 0 :(得分:3)
首先,您显然不了解SQL Server和String[] mycommand = strCommand.split(" ");
execFFmpegBinary(mycommand );
伪表中的触发器。这些行可以有多行,因此插入多行时代码将失败。可悲的是,这种情况没有编译检查。代码可能意外失败(即使在生产中,唉)。
其次,正确的做法可能是有一个独特的约束。那将是:
inserted
这样可以确保没有重复,因此它比触发器更强大。