【发布时间】:2015-04-25 15:05:31
【问题描述】:
如何触发我的事务表中的 ID 在每个会话的每个表的所有条目上都相同?我正在尝试向许多表中插入大量信息,但试图通过 TransactionID 将所有表链接在一起,并且正在努力研究如何使用第一个条目创建 TransactionID,然后抓取该条目并将其用于所有其他表条目。
(这是我创建事务的插入。这应该会自动在我的事务表中创建一个 ID,因为 ID 是我在事务表中的主键,并且 IsIdentity 是并且递增一)
<cfquery datasource="Titlesbymail" name="InsertEntry">
INSERT INTO dbo.Transaction (Type, OwnerType)
VALUES (
<cfqueryparam value='NonLeased' cfsqltype='cf_sql_varchar' />
, <cfqueryparam value='Owner' cfsqltype='cf_sql_varchar' />
)
</cfquery>
然后创建事务表:
编号:1
类型:非租赁
OwnerType:所有者
我正在尝试弄清楚如何将相同的事务 ID 与我的下一个条目一起插入到我的其他 6 个表中(如果表存在)
<cfquery datasource="Titlesbymail" name="CustomerInsertEntry">
INSERT INTO dbo.Customer (TransactionID, ID, FirstName, LastName)
VALUES (
<cfqueryparam value= **'(ID from Transaction Table)'** cfsqltype='cf_sql_int' />
, <cfqueryparam value='1' cfsqltype='cf_sql_int' />
, <cfqueryparam value='#session.checkout.info.firstname_1#' cfsqltype='cf_sql_varchar' />
, <cfqueryparam value='#session.checkout.info.lastname_1#' cfsqltype='cf_sql_varchar' />
)
</cfquery>
这对我来说是全新的,并且已经做了很多研究,我只是不断遇到触发器的 sql 命令,但不知道这如何适用于我这样的冷融合设置。
【问题讨论】:
-
"Transaction" 是 SQL Server 中的保留字,因此不适合用作表名。考虑重命名表。此外,其中一个查询参数使用了不正确的类型。它应该是
cf_sql_integer,而不是cf_sql_int。不幸的是,CF 不会警告您拼写错误,因此您可以输入“cf_sql_grapefruit”并且 CF 服务器会允许它。但是,它默认将参数作为字符串传递,which is undesirable。
标签: sql-server coldfusion