数据表插入触发器

时间:2016-02-26 14:37:32

标签: vb.net ado

我想在数据集表上实现sql insert trigger。

我的应用有两个数据集表:

-- Table: Artikli -- IDB - int,autoincrement Sifra - int, primary key Naziv - string Cena - double PS - string

-- Table: PodArtikli -- IDB - int,autoincrement,primary key Sifra - int Naziv - string Cena - double Kolicina - int Ukupno - computed column (Cena*Kolicina) Pakovanje - double Jed.Mere - string PLU - string, unique Cena_Po_Meri - computed column (1000/Pakovanje * Cena)

这些表通过外键约束相关,其中父表为Artikli,子表为PodArtikliSifra。 我希望在Artikli中添加新行时,在PodArtikli表格中自动添加Sifra,Naziv的新行,以及Cena中添加的行的Artikli值1}}表。

数据集表中的数据显示在DataGridView中。 在按钮btnizmene的点击事件中,我有以下代码:

Dim novirow As DataRow = dspetrovac.Artikli.NewRow
novirow("Sifra") = grdpodaci.Item(1, grdpodaci.CurrentRow.Index).Value
novirow("Naziv") = grdpodaci.Item(2, grdpodaci.CurrentRow.Index).Value
novirow("Cena") = grdpodaci.Item(3, grdpodaci.CurrentRow.Index).Value
novirow("PS") = grdpodaci.Item(4, grdpodaci.CurrentRow.Index).Value

1 个答案:

答案 0 :(得分:0)

您不能在.NET DataTable中编写触发器,但可以使用DataTable事件实现类似的操作。例如,您可以执行RowChanging事件并更改行,查看是否添加了行,然后使用该行中的数据将新行插入子表

Private Sub Row_Changing(ByVal sender As Object, ByVal e As DataRowChangeEventArgs)
    If e.Action = DataRowAction.Add Then 
        Dim newChild as DataRow = childTable.NewRow()
        ' Get new row fr here and insert values 
        newChild("field") = e.Row("field")
        . . . . . . . 
        childTable.Rows.Add(newChild)
    End If
 End Sub