假设我有一个像这样的CREATE TABLE代码:
CREATE TABLE Test (
ID int NOT NULL IDENTITY(1,1),
SortIndex int,
Name nvarchar(50) NOT NULL
);
我想知道是否可以在MSSQL中创建一个表,当我运行INSERT时,该表能够将ID的值插入SortIndex列。
所以我会运行这个INSERT:
INSERT INTO Test (Name) VALUES ('Awesome Dude');
通常会产生一行:
ID,SortIndex,Name
1,NULL,"Awesome Dude"
但我希望自动成为:
ID,SortIndex,Name
1,1,"Awesome Dude"
甚至可以通过改变CREATE TABLE脚本,还是必须使用TRIGGER?
答案 0 :(得分:1)
我倾向于对此采取略微不同的方法。如果您希望SortIndex默认为ID,但是可以覆盖,我会使用可为空的列和计算列:
CREATE TABLE Test (
ID int NOT NULL IDENTITY(1,1),
OverrideSortIndex int,
Name nvarchar(50) NOT NULL,
SortIndex AS ISNULL(OverrideSortIndex, ID)
);
如果由于任何原因需要更改排序索引,请更新列OverrideSortIndex
,这将优先。