Auto wypełnianie pól przy dodaniu nowego rekordu

0

Mam pytanie
Chciałbym aby przy dodawaniu nowego rekordu do tabeli niektóre pola wypełniały się same i nie musiał robić tego użytkownik, a nawet nie mógł (tak jak id przez IDENTITY).

CREATE TABLE [dbo].[Defects](
	[idDefect] [int] IDENTITY(1,1) NOT NULL,
	[Number_notification] [varchar](15) NOT NULL,
	[Road] [int] NOT NULL,
	[Element] [int] NOT NULL,
	[Intensity] [int] NOT NULL,
	[Description] [nvarchar](1000) NULL,
	[Recommendation] [nvarchar](1000) NULL,
	[IdPhotoStorage] [nvarchar](1000) NULL,
	[Author] [int] NOT NULL,
	[Notification_date] [datetime] NOT NULL
 CONSTRAINT [PK_Defects] PRIMARY KEY CLUSTERED 
(
	[idDefect] ASC
)WITH (STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO

Chodzi mi o kolumny [Number_notification] żeby składała się z "autoikrementujący się numer/aktualny rok" np. 5/2021 i była unikalna oraz [Notification_date] żeby wypełniał się aktualną datą w momencie dodania rekordu.

4

Np tak - przy czym używam tu IdDefect jako "autoikrementujący się numer" bo dlaczego nie ? :

CREATE TABLE [dbo].[test3](
	[id] [int] IDENTITY(1,1) NOT NULL,
	[kol1]  AS (concat([ID],'-',datepart(month,[dataTeraz]),'/',datepart(year,[dataTeraz]))),
	[dataTeraz] [datetime] DEFAULT (getdate()),
	[kol2] [nchar](10) NULL
) ON [PRIMARY]
GO
1

Jak potrzebujesz czegoś bardziej skomplikowanego niż to, co zaproponował @BlackBad to pozostaje zrobić to na triggerach, ale tylko jak musisz.

4

ale to co zaproponował @BlackBad sprawi, że po przejściu na nowy miesiąc/rok numery będą lecieć dalej oraz jeśli rekord się z jakiegoś powodu nie zapisze (choćby nieuzupełnione pole not null) to będą dziury w numeracji. Jak t oma być coś jak np. numeracja faktur (numeracja bez dziur, numeracja miesięczna / roczna) to tak prosto się nie da

1

Prawda. :) Ale nie było w "specyfikacji", że dziur być nie może więc jest git ;)

Tym bardziej nie było mowy, że to ma być licznik faktur/dokumentów per mc czy rok. Bo wtedy faktycznie trza by podejść do tematu inaczej - ambitniej.
Nie mniej pełna zgoda @abrakadaber

1 użytkowników online, w tym zalogowanych: 0, gości: 1