由于我们要在两个不同表中插入记录,所以在这里使用了事务来保证操作的原子性。其中往Community_ContentPages表中插入记录是通过调用Communit_AddContentPage这个存储过程来完成的,把FAQ的问题作为@Title参数、介绍作为@Description参数。AddContentPage执行完后返回新增记录的主键值,该数值被用于往Community_Faqs中新增记录。
在CSK中所有新增记录的存储过程必须返回主键值作为结果。
得到新的ContentPageID数值在系统的上层是很有用的,这一点我们将在后面写数据访问组件时看到。
这个用于修改已有的FAQ记录的存储过程需要的参数比前面少了很多。因为有些字段在我们增加记录之后就不会再被修改,如区域编号等。其代码如下:
CREATE PROCEDURE Community_FaqsEditFaq
(
@communityID int,
@contentPageID int,
@username NVarchar(50),
@topicID int,
@question NVarchar(100),
@introduction NVarchar(500),
@metaDescription NVarchar(250),
@metaKeys NVarchar(250),
@answer Text,
@reference Text
)
AS
DECLARE @UserID int
SET @UserID = dbo.Community_GetUserID(@communityID, @username)
EXEC Community_EditContentPage
@contentPageID,
@userID,
@question,
@introduction,
@metaDescription,