我在SQL Server 2012中有一个表,
CREATE TABLE [dev].[File]
(
id BIGINT IDENTITY(1,1) NOT NULL,
fileUrl VARCHAR(1024) NOT NULL
PRIMARY KEY (id)
);
fileUrl 的值需要基于前缀和 id 字段的值进行计算。即
fileUrl = <file_directory>/<id>.<file_extension> // id needs to be computed when created
// e.g. http://example.com/<id>.xlsx
因此,使用sequelize.js时,它必须类似于
const filePath = 'http://example.com'
const fileExtension = '.xlsx'
File.create({
fileUrl: // What goes here?
})
一种方法是使用空的fileUrl创建行,然后根据ID查找并更新。
有没有更简单的方法来实现这一目标?
答案 0 :(得分:0)
如果您想作为PK身份,则必须按照您的描述进行操作(或按照@maulik kansara的评论)。在创建标识列之前我们曾经做过的事情是:
创建一个表,例如具有一列的NextValue NextKey bigint不为null。伪代码:
read nextKey into localvalue
update NextLalue set NextKey = NextKey + 1 where NextKey = localvalue
if row was updated continue else go back to start
use localvalue as [dev].file.id.
对此有多种变体,但这就是它的核心。