我試圖建立一個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