CREATE TABLE,其中插入多个具有相同值的列

时间:2014-09-17 12:34:40

标签: sql sql-server sql-insert create-table

假设我有一个像这样的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?

1 个答案:

答案 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,这将优先。