用SQL创建C#中Selecting MAX函数的方法

本文关键字:MAX 函数 方法 Selecting SQL 创建 | 更新日期: 2023-09-27 18:26:36

我有这种插入数据的方法

private void InsertReceipt()
    {   
        decimal Stub;
        Stub = Math.Floor(decimal.Parse(txtAmount.Text) / 2000);
        SqlCommand cmd = new SqlCommand();
        cmd.Connection = cn;
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "INSERT INTO Ticket(CustomerID, Date, Store, Amount, NoStub)" +
                    "VALUES (@CustomerID, @Date, @Store, @Amount, @NoStub) ";
        cmd.Parameters.AddWithValue("@CustomerID", txtCustomerID.Text);
            cmd.Parameters.AddWithValue("@Date", dtpDate.Value.Date.ToString());
        cmd.Parameters.AddWithValue("@Store", txtStore.Text);
        decimal amount = decimal.Parse(txtAmount.Text);
        cmd.Parameters.AddWithValue("@Amount", amount);
        cmd.Parameters.Add("@NoStub", SqlDbType.Decimal).Value = Stub;
        cmd.ExecuteNonQuery();            
    }

我只想有一个方法,如果你在表"Ticket"中插入一个数据,就会有另一个表更新。

    CustomerID      Date        Store      Amount      NoStub
         1        6/7/2013      Nike       4000          2
         2        6/7/2013      Adidas     6000          3

这个表将被更新,例如我将使用名为"StubRange"的表,这个输出将被生成。

 RangeID         CustomerID      NoStub       TickerStart      TickerEnd
   1                1              2           00001           00002
   2                2              3           00003           00005

我只是想学习如何使用这种方法。

用SQL创建C#中Selecting MAX函数的方法

您要查找的是After Insert触发器
基本上,您可以将其视为插入发生后触发的事件(因此触发…)

你的触发器应该看起来像:

CREATE TRIGGER YourTriggerName --The name of your trigger
ON Ticket --The table it will be observing
 AFTER INSERT,UPDATE --It will trigger after insert / update
AS
--The actions you want to do. For example:
DECLARE @CustomerId int
SET @CustomerId = (SELECT CustomerId FROM inserted) --you might want to use 'inserted' table
--Inset values
Insert into StubRange (CustomerID , NoStub) 
Select Distinct ins.CustomerID, ins.NoStub 
From Inserted ins
--Update existing records
UPDATE StubRange
set --Set what ever it is you want to update
WHERE CustomerId = @CustomerId 

更多关于插入表-根据微软:

插入的表在INSERT期间存储受影响行的副本和UPDATE语句。在插入或更新事务期间,新建行被添加到插入的表和触发器表中。这个插入表中的行是触发器中新行的副本桌子

在Ticket表中插入记录时,需要编写一个插入触发器。您可以参考以下语法来创建触发器。这是一个Oracle语法

CREATE OR REPLACE TRIGGER TRIGGER_INSERT_STUBRANGE 
AFTER INSERT ON TICKET
FOR EACH ROW
DECLARE
    raise_exception                Exception;
BEGIN
        --WRITE YOUR INSERT STATEMENT HERE
Exception
         when raise_exception then
         RAISE_APPLICATION_ERROR(-20001, sqlerrm );
END;

这将在更新表1时在表1上创建一个插入触发器,表2将使用表1中的CustomerID和NoStub进行更新,其余属性取决于您的业务逻辑

CREATE TRIGGER trig_Update_table
ON [tableName1]
FOR INSERT
AS
Begin
    Insert into tableName2 (CustomerID , NoStub) 
    Select Distinct i.CustomerID, i.NoStub 
    from Inserted i
End