1

以下の表があります: SQL Server の使用

create table PoojaDetails
(
    PoojaDetailsID int identity constraint pk_PoojaDetailsID Primary Key, 
    ReceiptNo AS 'PB' + '/' + datepart(yy,getdate()) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) PERSISTED,
    ReceiptDate datetime not null constraint df_ReceiptDate default getdate(),
    FirstName varchar(100) not null,
    LastName varchar(100) not null,
    TelNo bigint
)

クエリを実行すると: テーブル 'PoojaDetails' の計算列 'ReceiptNo' は、列が非決定論的であるため永続化できません。

ReceiptNo を PB/year/no のようにしたいと思います。PB/13/213433

何か案は???御時間ありがとうございます

4

2 に答える 2

1

ReceiptDate常にデフォルトの制約によって入力され、変更されないことに依存できる場合getdate()は、計算列の代わりに使用できます。

create table PoojaDetails
(
    PoojaDetailsID int identity constraint pk_PoojaDetailsID Primary Key, 
    ReceiptNo AS 'PB' + '/' + CONVERT(varchar(5),datepart(yy,ReceiptDate)) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) PERSISTED,
    ReceiptDate datetime not null constraint df_ReceiptDate default getdate(),
    FirstName varchar(100) not null,
    LastName varchar(100) not null,
    TelNo bigint
)
于 2013-11-12T09:06:49.917 に答える
1

試してみてください。

create table PoojaDetails
(
    PoojaDetailsID int identity constraint pk_PoojaDetailsID  Primary Key, 
    ReceiptNo  AS 'PB' + '/' + cast(datepart(yy,getdate()) as varchar(25)) + '/' + RIGHT('000000' + CAST(PoojaDetailsID AS VARCHAR(10)), 6) ,
    ReceiptDate datetime not null constraint df_ReceiptDate default getdate(),
    FirstName varchar(100) not null,
    LastName varchar(100) not null,
    TelNo bigint
)
于 2013-11-12T09:23:40.330 に答える