我试图建立一个INSERT触发器上类似下面的一个观点:SQL触发器插入到表
CREATE view [dbo].[PYC_ServiceAppointments] AS
SELECT
e.epUR as 'ClientUR',
codeDescription as 'Category',
s.serName as 'Service',
a.OccurrenceDate as 'StartDate',
a.EndDate as 'EndDate',
a.StartTime as 'StartTime',
a.EndTime as 'EndTime',
a.Confirmed as 'ServiceStatus',
a.Note as 'Note'
FROM
[ServiceAppointmentViewBase] a
INNER JOIN
Episode e ON e.cid = a.ClientID AND e.epRecent = '1'
INNER JOIN
[Service] s ON s.serID = a.ServiceID
LEFT JOIN
Codes c ON s.sCatCode = c.codecode AND c.codetype = 'SVC'
我使用下表为其中的数据表插入:
CREATE TABLE [dbo].[ServiceAppointments]
(
[SID] [int] IDENTITY(1,1) NOT NULL,
[ClientUR] [varchar](50) NULL,
[Category] [varchar](150) NULL,
[Service] [varchar](60) NULL,
[StartDate] [datetime] NULL,
[EndDate] [datetime] NULL,
[StartTime] [datetime] NULL,
[EndTime] [datetime] NULL,
[ServiceStatus] [bit] NULL,
[Note] [text] NULL,
PRIMARY KEY CLUSTERED ([SID] ASC)
WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF,
ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [PRIMARY]
) ON [PRIMARY]
TEXTIMAGE_ON [PRIMARY]
这是我试图用它来执行插入触发器:
CREATE TRIGGER [dbo].[Trigger_Service]
ON [PYC].[dbo].[PYC_ServiceAppointments]
INSTEAD OF INSERT
AS
BEGIN
SET NOCOUNT ON;
SET ROWCOUNT 0;
INSERT INTO PYC.dbo.ServiceAppointments
(
ClientUR,
Category,
[Service],
StartDate,
EndDate,-- = ISNULL(Getdate(), CurrentValues.EndDate)),
StartTime,
EndTime,
ServiceStatus,
Note)
SELECT
b.ClientUR, b.Category, b.[service], b.StartDate, b.EndDate,
b.StartTime, b.EndTime, b.ServiceStatus, b.Note
FROM
Inserted b
END
的数据库存储数据没有针对表的唯一ID,所以我试图完成的是当一个条目被添加到数据库中并且在视图中满足需求时,所以它填充了这个条目,它将触发触发器并使用SID(PK)为该行分配一个id,将该行添加到表中。
我已经在包含与指定表相同的列的测试表上尝试过相同的触发器,并且当条目添加到表时,触发器触发并将行添加到另一个表。
我对使用触发器相当新,所以任何帮助将不胜感激。
备注:将在未来的SQL Server版本中删除'ntext','text'和'image'数据类型。避免在新的开发工作中使用这些数据类型,并计划修改当前正在使用它们的应用程序。改为使用'nvarchar(max)','varchar(max)'和'varbinary(max)'。 [详细信息在这里](http://msdn.microsoft.com/en-us/library/ms187993.aspx) – 2014-09-23 06:39:22
行 - 所以你告诉我们你的整个设置 - 和**问题**是?这是行不通的,即给你一个错误?如果是这样:*什么*错误?还有什么是错的?一切似乎都是按顺序的,乍一看... – 2014-09-23 06:40:25
为什么你有'SET ROWCOUNT 0;'?据我的理解,这意味着没有行会被处理。 – 2014-09-23 06:41:05