【问题标题】:i want copy data from table to another without duplicate using triggers我想使用触发器将数据从表复制到另一个不重复
【发布时间】:2019-11-12 07:27:57
【问题描述】:

我有两张桌子 在第一张表中,它每时每刻都添加行取决于用户插入 在表二中,我想复制每一行都已添加到表一中,但具有特定标准 并且第二张表还有一些额外的列,我稍后需要它们 我想通过触发器做到这一点,但我不知道该怎么做

我已经尝试过存储过程但不是自动的

INSERT INTO ax.RETAILTRANSACTIONSALESTRANS2
(
    [BARCODE]
    , [CREATEDDATETIME]
	,[Name]
    , [ITEMID]
    , [NETAMOUNTINCLTAX]
    , [QTY]
    , [STAFFID]
    , [TERMINALID]
    , [TRANSDATE]
	,[PERIODICPERCENTAGEDISCOUNT]
	,[ReceiptID]
)
SELECT ab.[BARCODE]
    , ab.[CREATEDDATETIME]
	,[ax].[ECORESPRODUCTTRANSLATION].[NAME]
    , ab.[ITEMID]
    , ab.[PRICE]
    , ab.[QTY]
    , ab.[STAFFID]
    , ab.[TERMINALID]
    , ab.[TRANSDATE]
	, ab.[PERIODICPERCENTAGEDISCOUNT]
	,ab.RECEIPTID
FROM ax.RetailTransactionSalesTrans ab
inner join [ax].[INVENTTABLE] on ab.[ITEMID] =[ax].[INVENTTABLE].[ITEMID]
inner join [ax].[ECORESPRODUCTTRANSLATION] on [ax].[INVENTTABLE].PRODUCT =[ax].[ECORESPRODUCTTRANSLATION].[PRODUCT]
LEFT JOIN ax.RETAILTRANSACTIONSALESTRANS2 a ON 
a.[BARCODE] = ab.[BARCODE]
    AND a.[CREATEDDATETIME] = ab.[CREATEDDATETIME]
    AND a.[ITEMID] = ab.[ITEMID] 
    AND a.[NETAMOUNTINCLTAX] = ab.[PRICE]
    AND a.[QTY] = ab.[QTY] 
    AND a.[STAFFID] = ab.[STAFFID] 
    AND a.[TERMINALID] = ab.[TERMINALID] 
    AND a.[TRANSDATE] = ab.[TRANSDATE]
	AND a.[PERIODICPERCENTAGEDISCOUNT]=ab.[PERIODICPERCENTAGEDISCOUNT]
	and a.Process=null and a.Checked=null and a.[Select]=null
	where ab.[QTY]>0 and ab.[RECEIPTID]!='' and ab.[TRANSDATE] >= DATEADD(day, @daycount*-1, GetDate())
	and NOT EXISTS(select * from ax.RETAILTRANSACTIONSALESTRANS2 where [CREATEDDATETIME] = ab.[CREATEDDATETIME])

我想将其转换为触发器,但我不知道该怎么做

注意:@daycount 我从另一张桌子上拿了它,但我通过我的程序传递了它

【问题讨论】:

标签: sql sql-server triggers copy database-trigger


【解决方案1】:

您可以使用下面的内容并编辑所需的列,想法是FROM Inserted您可以选择插入到主表中的所有行。

CREATE TRIGGER TRetailTransactionSalesTrans ON RetailTransactionSalesTrans
FOR INSERT
AS
BEGIN
    INSERT INTO RETAILTRANSACTIONSALESTRANS2
    SELECT [BARCODE]
        ,[CREATEDDATETIME]
        ,[Name]
        ,[ITEMID]
        ,[NETAMOUNTINCLTAX]
        ,[QTY]
        ,[STAFFID]
        ,[TERMINALID]
        ,[TRANSDATE]
        ,[PERIODICPERCENTAGEDISCOUNT]
        ,[ReceiptID]
    FROM Inserted;
END

【讨论】:

  • 因为我看到此错误消息 207,级别 16,状态 1,过程 TRetailTransactionSalesTrans,第 3 行无效的列名称“名称”。消息 213,级别 16,状态 1,过程 TRetailTransactionSalesTrans,第 2 行 列名或提供的值的数量与表定义不匹配。
  • table tow 比表一多了 4 列,但这些列在表一上不存在,并且与表一没有关系,名称列来自另一个具有内部连接的表
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-06
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
相关资源
最近更新 更多