2

テーブルの列に特定の値を自動生成するにはどうすればよいですか? などの列に値を自動生成したい"WD-2010-0001","WD-2010-0002", "WD-2010-0003"。誰でも助けることができますか??

前もって感謝します

4

5 に答える 5

1

コメントで述べたように、さまざまな部分を別々に保存してから、計算列を使用してフォーマットします。これは次のように簡単です。

create table T (
    _ID int IDENTITY(20100001,1) not null,
    ID as 'WD-' + LEFT(CONVERT(varchar(10),_ID),4) + '-' + SUBSTRING(CONVERT(varchar(10),_ID),5,10),
    ColumnA int not null
)
go
insert into T(ColumnA) values (10)
go
select ID,ColumnA from T

生成するもの:

ID                 ColumnA
------------------ -----------
WD-2010-0001       10

そして、次の挿入はWD-2010-0002、などになります。

于 2013-08-12T07:39:11.353 に答える
1

計算列で式を使用する

IF OBJECT_ID('dbo.test2') IS NOT NULL DROP TABLE dbo.test2
CREATE TABLE dbo.test2
 (
  Id int IDENTITY,
  colLikeWd varchar(2) DEFAULT 'WD',
  colLikeYear varchar(4) DEFAULT '2010',
  colLikeAuto AS colLikeWd + '-' + colLikeYear + '-' + RIGHT('0000' + CAST(Id AS varchar(4)), 4),
  colAnother varchar(100)
  )
GO 

INSERT dbo.test2(colAnother)
VALUES('AnotherColumn')
GO 5  

SELECT *
FROM dbo.test2

デモを見るSQLFiddle

于 2013-08-12T07:39:25.843 に答える
0

OPが意味するのは、その特定の値を生成する方法ではなく、列を自動的に埋める方法だと思います。トリガーを使用するのが正しい方法だと思います。何かのようなもの:

CREATE TRIGGER [Add_WD] on dbo.MyTable AFTER INSERT AS
UPDATE dbo.MyTable
SET WD = '' -- you can put your value generation logic here.
FROM Inserted i
WHERE dbo.MyTable.PrimaryId = i.PrimaryId
于 2013-08-12T07:16:32.207 に答える