テーブルの列に特定の値を自動生成するにはどうすればよいですか? などの列に値を自動生成したい"WD-2010-0001","WD-2010-0002", "WD-2010-0003"
。誰でも助けることができますか??
前もって感謝します
テーブルの列に特定の値を自動生成するにはどうすればよいですか? などの列に値を自動生成したい"WD-2010-0001","WD-2010-0002", "WD-2010-0003"
。誰でも助けることができますか??
前もって感謝します
コメントで述べたように、さまざまな部分を別々に保存してから、計算列を使用してフォーマットします。これは次のように簡単です。
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
、などになります。
計算列で式を使用する
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
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