【发布时间】:2011-05-15 08:25:07
【问题描述】:
向 StackOverflow 社区致敬!
对于这个新项目,我需要编写一个触发器,该触发器在将一行插入其中一个表时触发。
我有一个名为 Questions 的表格,其中包含以下字段:
- ID - 整数
- 创建日期 - smalldatetime
- Category_ID - 整数
- 值 - ntext
- 时间限制 - 小日期时间
- 助手 - ntext(可为空)
另一个表 User_Questions 包含以下字段:
- ID - 整数
- Question_ID - 整数
- User_ID - 整数
- 创建日期 - smalldatetime
- 助手 - ntext(可为空)。
现在我想我可以编写一个触发器,从 Questions 表中提取 Datecreated 和 ID 字段,并将它们添加到 Users_Questions 表的新行中。您能否建议我如何获取 User_ID 字段的值?
那将不胜感激。
非常感谢您!
【问题讨论】:
-
1.) 为什么要在两个表中保留相同的日期?这是多余的,不要这样做。 2.) 任何人都应该如何知道
User_ID值的来源?你不是这么说的。 3.) 有没有一个问题可以属于多个用户? -
请问到目前为止您尝试了什么?基于 MSDN msdn.microsoft.com/en-us/library/ms189799.aspx
-
在这种情况下我更喜欢的一个选项是创建一个存储过程,该过程采用必要的输入参数,然后将您的两个输入输入到事务中的两个表中。这样你就可以控制正在发生的事情。众所周知,触发器很难正确,它们不能很好地扩展 - 如果可能的话,我会尽量避免触发器(并非总是可能,但通常是这样)
-
您没有告诉我们您使用的是什么版本 SQL Server - 但如果您使用的是 2005 或更高版本,则应该避免
NTEXT数据类型 - 改用NVARCHAR(MAX)! -
@Tomalak 是的,你是对的,我将删除 UserQuestions 表中多余的 datecreated 字段。 User_ID 是一个外键字段,它指向用户表的 ID 字段。用户必须先登录才能提出问题。 3)我不太明白这个?你这是什么意思?
标签: asp.net sql sql-server database triggers