好的我有一个问题,这可能很容易,但我找不到解决方案。
我有3个表加上一个主要的tbl。
tbl_1 - tbl_1Name_id
tbl_2- tbl_2Name_id
tbl_3 - tbl_3Name_id
我想将Name_id字段连接到下面的主要tbl字段。
main_tbl
___________
tbl_1Name_id
tbl_2Name_id
tbl_3Name_id
主tbl具有这些字段的唯一键,而在另一个表中,字段是普通字段NOT NULL。
我想要做的是,无论何时在tbl_1,tbl_2或tbl_3中输入记录,主表中的值都会以该字段或其他方式显示。 我也有多对一的关系,其中一个当然是主要的。
我觉得这应该很简单但不能让它起作用。
答案 0 :(得分:1)
看看SQL Server triggers。这将允许您在将记录插入任何一个表时执行操作。
如果您提供更多信息,请执行以下操作:
我可以尝试给你更多细节。
<强>更新强>
根据您的新评论,我怀疑您正在使用非规范化数据库架构。以下是我建议您在所讨论的Employee-Medical访问场景中构建表格的方法:
Employee
--------
EmployeeId
fName
lName
EmployeeMedicalVisit
--------------------
VisitId
EmployeeId
Date
Cost
一些重要的事情:
通过上述结构,当员工访问医疗办公室时,您将在EmployeeMedicalVisit中插入记录。要为员工选择所有医疗访问,您可以使用以下查询:
SELECT e.fName, e.lName
FROM Employee e
INNER JOIN EmployeeMedicalVisit as emv
ON e.EployeeId = emv.EmployeeId
希望这有帮助!
答案 1 :(得分:0)
这是一个示例触发器,可能显示您需要:
Create trigger mytabletrigger ON mytable
For INSERT
AS
INSERT MYOTHERTABLE (MytableId, insertdate)
select mytableid, getdate() from inserted
在触发器中,您有两个可用的插件,已插入和删除。 insert表会压缩插入到触发器的表中的数据,包括任何自动生成的id。假设您不需要同时使用其他数据,那么就是将数据传输到另一个表的方法。你可以从系统存储的procuders或连接到其他表中获取其他数据,但不能从应用程序中的表单获取。
如果确实需要触发器中没有的其他数据(例如表单中的其他值,那么您需要编写一个sttored过程来插入到一个表并通过输出子句或使用返回id值scope_identity()然后使用该数据为下一个表构建插入。