Sql server 将主键值插入SQL表中同一记录的其他列
我正在使用一个数据库应用程序,它通过Asp.NETMVC中的网页将记录添加到表中 我有一个带有以下列的表Sql server 将主键值插入SQL表中同一记录的其他列,sql-server,asp.net-mvc-4,knockout.js,odata,Sql Server,Asp.net Mvc 4,Knockout.js,Odata,我正在使用一个数据库应用程序,它通过Asp.NETMVC中的网页将记录添加到表中 我有一个带有以下列的表 Id TermName TermOrder 我正在从网页中插入一个TermName,我希望TermOrder的值与Id的值相同。 例如,我在表中插入一个TermName“Fall”,默认情况下,它会使用标识规范(比如10)添加Id,但会将0添加到TermOrder中,但我希望Id值为10也在TermOrder中 我正在使用knockout Js和Odata插入一条记录 击倒Js self.
Id
TermName
TermOrder
我正在从网页中插入一个TermName
,我希望TermOrder
的值与Id
的值相同。
例如,我在表中插入一个TermName“Fall”,默认情况下,它会使用标识规范(比如10)添加Id,但会将0添加到TermOrder中,但我希望Id值为10也在TermOrder中
我正在使用knockout Js和Odata插入一条记录
击倒Js
self.addTerm = function (term) {
var payload = {TermName: this.Term()};
$.ajax({
url: '/odata/Terms',
type: 'POST',
data: JSON.stringify(payload),
contentType: 'application/json',
dataType: 'json'
});
}
控制器
protected override Term CreateEntity(Term entity)
{
var newTerm = db.Terms.Find(entity.Id);
if (newTerm == null)
{
newTerm = db.Terms.Add(entity);
entity.TermOrder = entity.Id;
}
else
{
newTerm = db.Terms.Add(newTerm);
entity.TermOrder = entity.Id;
}
db.SaveChanges();
return newTerm;
}
我可以知道更好的处理方法吗?一种解决方案是使用触发器:
CREATE TRIGGER trgI_Terms_UpdateTermOrder
ON dbo.Terms
AFTER INSERT
AS
BEGIN
UPDATE t
SET TermOrder = i.Id -- This will copy ID values in TermOrder
FROM dbo.Terms t INNER JOIN inserted i ON t.Id = I.Id
END;
GO
谢谢,我该怎么做呢?但是我不想在TermOrder中插入Id,我想要Min(TermOrder)-1,因为我不能在集合中使用聚合函数