我在服务器中有一个数据库作为[test]。这个[test]数据库有大约50个表,我通过使用最基本的表列在该[test]数据库中创建了一个视图。然后又在[list]的同一服务器中有另一个数据库,我通过参考[test]数据库视图在[list]数据库中创建了一个视图。然后我将[list]数据库视图中的数据插入到同一[list]数据库中的表中。更新[test]数据库后,我需要在[list]数据库中更新我的视图和表。
为了做到这一点,我先写了一个触发器来更新[list]数据库中的视图并且它有效。这是触发器。
Sub copyData()
Dim invNo As String
Dim lastRow As Integer
Dim sourceSht As Worksheet
Dim targSht As Worksheet
Set sourceSht = Worksheets("Sheet3")
'evaluates every data item from row 2 to last populated row
For Row = 2 To sourceSht.Cells(sourceSht.Rows.Count, 1).End(xlUp).Row
invNo = sourceSht.Range("F" & Row).Value
'if invNo blank, skip
If invNo <> "" Then
'try to find the sheet, make if does not exist
invNo = invNo & "_INV"
On Error Resume Next
Set targSht = Worksheets(invNo)
If targSht Is Nothing Then
Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = invNo
Set targSht = Worksheets(invNo)
'SetHeader
End If
'find first empty row in targSht
lastRow = targSht.Cells(targSht.Rows.Count, 1).End(xlUp).Row + 1
'copy row of data
sourceSht.Range("A" & Row & ":L" & Row).Copy
targSht.Range("A" & lastRow & ":L" & lastRow).Select
targSht.Paste
'must do to make more sheets
Set targSht = Nothing
End If
Next
End Sub
现在我需要在listView更新后更新我的[list]数据库表。为此,我写了以下触发器。当我执行触发器时,我得到了成功完成命令的结果,但没有更新我的表。
Use database list
Create trigger UpdateView on listView Instead of Update
AS
Begin
Update [test].[dbo].[testView]
set testPersonId = testPersonId + 1
From testView
End
Go
我只需要知道这个触发器的错误以及如何使它工作。
以下是我的testView中的对象。
Use database list
Create trigger UpdateTable on listTable Instead of Update
AS
Begin
Update [list].[dbo].[listView]
set listPersonId = listPersonId + 1
From listView
End
Go
以下是listView中的对象。
> testPersonId int
> testPersonName nvarchar
> testDepId int
> testDepName nvarchar
> testLogRecordNowId int
> testLogRecordNowTime datetime
> testNowLogEvent smallint
> testLastLogRecordTime datetime
> testLastLogEvent smallint
> testInTimeHour nvarchar
> testInTimeMinute nvarchar
然后我的[list]数据库中的表已经通过codefirst方式创建。这是代码。
> listPersonId int
> listPersonName nvarchar
> listDepId int
> listDepName nvarchar
> listLogRecordNowId int
> listLogRecordNowTime datetime
> listNowLogEvent smallint
> listLastLogRecordTime datetime
> listLastLogEvent smallint
> listInTimeHour nvarchar
> listInTimeMinute nvarchar
我能够将listView数据插入此表(listTable)。现在我只需要在listView更新后更新此表。是否可以使用触发器执行此操作?如果不是,是否有其他方法可以不使用触发器?