这是建立插入表的SQL语句USE [BMS_FLEX]
GO
/****** 对象:  Table [dbo].[BMS_STUFF_history]    脚本日期: 07/15/2009 19:58:10 ******/CREATE TABLE [dbo].[BMS_STUFF_history](
[ID] [decimal](10, 0) IDENTITY(1,1) NOT NULL,
[type] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[sysdata] [datetime] NOT NULL,
[dml_name] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NOT NULL,
[BMS_STUFF_ID] [decimal](10, 0) NULL,
[STUFF_NO] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[STUFF_CLASS_CODE] [nvarchar](50) COLLATE Chinese_PRC_CI_AS NULL,
[CLASS_CODE] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[STUFF_NAME_CN] [nvarchar](60) COLLATE Chinese_PRC_CI_AS NULL,
[STUFF_SPEC] [nvarchar](60) COLLATE Chinese_PRC_CI_AS NULL,
[RECORD_CURRENCY_CODE] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[PRICE] [decimal](18, 8) NULL,
[APPLY_MEASURE_CODE] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[WEIGHT_MEASURE_CODE] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[NET_WEIGHT] [decimal](18, 8) NULL,
[GROSS_WEIGHT] [decimal](18, 8) NULL,
[HS_NO] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[MEASURE_CODE1_RATE] [decimal](18, 8) NULL,
[MEASURE_CODE2_RATE] [decimal](18, 8) NULL,
[FROM_TO_COUNTRY] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[TAX_TYPE_CODE] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[AUTO_COMPUTE] [nvarchar](1) COLLATE Chinese_PRC_CI_AS NULL,
[IC_TYPE] [nvarchar](20) COLLATE Chinese_PRC_CI_AS NULL,
[CREATE_USER_ID] [decimal](10, 0) NULL,
[CREATE_DATE] [datetime] NULL,
[LAST_UPDATE_USER_ID] [decimal](10, 0) NULL,
[LAST_UPDATE_DATE] [datetime] NULL,
[STUFF_NAME_EN] [nvarchar](240) COLLATE Chinese_PRC_CI_AS NULL,
 CONSTRAINT [PK_BMS_STUFF_history] PRIMARY KEY CLUSTERED 
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]这是建立触发器的语句
USE [BMS_FLEX]
GO
/****** 对象:  Trigger [BMS_STUFF_trigger]    脚本日期: 07/15/2009 19:57:44 ******/
create trigger 
 [BMS_STUFF_trigger]
on [dbo].[BMS_STUFF] 
after update,insert,delete
as 
  begin 
  declare @op varchar(30)
  if not exists (select 1 from deleted)
     set @op = 'insert'
  else if not exists (select 1 from inserted)
     set @op = 'delete'
  else
     set @op = 'update'
  insert into BMS_STUFF_history 
  select case when @op = 'update' then 'update before' else @op end ,getdate(),user_name(),* from deleted 
  union all
  select case when @op = 'update' then 'update after' else @op end ,getdate(),user_name(),* from inserted
end
我之前在另一个数据库建好的触发器和数据表,我现在想拷到另一个数据库,总是出错,请教到底什么问题,头都大了,分全给你们了。

解决方案 »

  1.   

    是不是排序规则的问题,把所有COLLATE Chinese_PRC_CI_AS都去掉试试
      

  2.   

    insert into BMS_STUFF_history 
      select case when @op = 'update' then 'update before' else @op end ,getdate(),user_name(),* from deleted 
      union all 
      select case when @op = 'update' then 'update after' else @op end ,getdate(),user_name(),* from inserted 字段数目可对...
      

  3.   

    1、语法没错误
    2、复制表的时候,看顺序正确与否?例如你的触发器是建立在BMS_STUFF这张表上的,如果该表没有建立的话,建立触发器自然会出错
    3、请详细说明提示的错误
      

  4.   

    各位不好意思,确实是数据表列为不对应的原因,我之前在数据库A中建立的触发器和表,后来要挪到数据库B中,AB都是对应的一个软件,我还以为数据库一样的呢,谢谢各位了。