init
This commit is contained in:
@@ -0,0 +1,21 @@
|
||||
/*
|
||||
Minden olyan esetben amikor egy osztályhoz tartozó csoportokat kell meghatározni,
|
||||
akkor az alábbi módon kell ezeket megadni:
|
||||
a. Egy osztályhoz tartozik minden olyan csoport, amelynek tagja az osztály bármelyik tanulója.
|
||||
Tehát ha egy osztályból akár egyetlen tanuló is tagja egy csoportnak, akkor az az osztályhoz is kapcsolódik.
|
||||
b. Továbbá egy osztályhoz mindig kapcsolódnak az osztálybontásosnak jelölt csoportjaik is,
|
||||
függetlenül attól, hogy abban van-e tanuló!
|
||||
*/
|
||||
|
||||
DROP FUNCTION IF EXISTS fnGetKapcsolodoOsztalycsoportok
|
||||
GO
|
||||
|
||||
CREATE FUNCTION [dbo].[fnGetKapcsolodoOsztalycsoportok] (
|
||||
@osztalyCsoportId int
|
||||
,@pFeladatKategoriaId int = NULL
|
||||
) RETURNS TABLE
|
||||
RETURN (
|
||||
SELECT 1 AS ID
|
||||
)
|
||||
GO
|
||||
|
||||
@@ -0,0 +1,185 @@
|
||||
CREATE PROCEDURE [dbo].[sp_AddNewSchemaViews]
|
||||
@IntezmenyId int,
|
||||
@IntezmenyAzonosito nvarchar(30),
|
||||
@TanevId int
|
||||
AS
|
||||
BEGIN
|
||||
|
||||
DECLARE @IntezmenyTemplate nvarchar(50) = 'KR_'+@IntezmenyAzonosito
|
||||
DECLARE @Schema nvarchar(50) = @IntezmenyTemplate+'_Schema'
|
||||
DECLARE @SchemaUser nvarchar(50) = @IntezmenyTemplate + '_user'
|
||||
DECLARE @AktivTanev nvarchar(500)
|
||||
DECLARE @Sql nvarchar(max)
|
||||
|
||||
/*============================================================================*/
|
||||
/* View : T_HETES */
|
||||
/*============================================================================*/
|
||||
/* Package: Kreta */
|
||||
IF OBJECT_ID('['+@Schema+'].T_HETES', 'V') IS NOT NULL BEGIN
|
||||
SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_HETES'''
|
||||
EXEC sp_executesql @Sql
|
||||
|
||||
IF OBJECT_ID('['+@Schema+'].T_HETES_OSSZES', 'V') IS NOT NULL BEGIN
|
||||
SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_HETES_OSSZES'''
|
||||
EXEC sp_executesql @Sql
|
||||
END
|
||||
END
|
||||
ELSE BEGIN
|
||||
/* Ha nem létezik a view, akkor létrehozzuk */
|
||||
IF (SELECT COUNT(1)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = N'T_HETES' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_TANEVID'
|
||||
) > 0
|
||||
BEGIN
|
||||
SET @AktivTanev = N' C_TANEVID = '+ CAST(@TanevId as nvarchar) +' AND '
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @AktivTanev = N''
|
||||
END
|
||||
|
||||
IF (SELECT COUNT(1)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = N'T_HETES' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_INTEZMENYID'
|
||||
) > 0
|
||||
BEGIN
|
||||
/* T_HETES */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_HETES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_HETES
|
||||
WHERE '+@AktivTanev+' (TOROLT = ''F'') AND C_INTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
|
||||
EXECUTE sp_executesql @Sql
|
||||
|
||||
/* T_HETES_OSSZES */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_HETES_OSSZES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_HETES
|
||||
WHERE C_INTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
|
||||
EXECUTE sp_executesql @Sql
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
/* T_HETES */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_HETES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_HETES
|
||||
WHERE '+@AktivTanev+' (TOROLT = ''F'')'
|
||||
EXECUTE sp_executesql @Sql
|
||||
|
||||
/* T_HETES_OSSZES */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_HETES_OSSZES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_HETES'
|
||||
EXECUTE sp_executesql @Sql
|
||||
END
|
||||
END
|
||||
|
||||
/*============================================================================*/
|
||||
/* View : T_BESZERZESISZALLITOTORZS */
|
||||
/*============================================================================*/
|
||||
/* Package: Kreta */
|
||||
IF OBJECT_ID('['+@Schema+'].T_BESZERZESISZALLITOTORZS', 'V') IS NOT NULL BEGIN
|
||||
SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_BESZERZESISZALLITOTORZS'''
|
||||
EXEC sp_executesql @Sql
|
||||
|
||||
IF OBJECT_ID('['+@Schema+'].T_BESZERZESISZALLITOTORZS_OSSZES', 'V') IS NOT NULL BEGIN
|
||||
SET @Sql = N'EXEC sp_refreshview ''['+@Schema+'].T_BESZERZESISZALLITOTORZS_OSSZES'''
|
||||
EXEC sp_executesql @Sql
|
||||
END
|
||||
END
|
||||
ELSE BEGIN
|
||||
/* Ha nem létezik a view, akkor létrehozzuk */
|
||||
IF (SELECT COUNT(1)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = N'T_BESZERZESISZALLITOTORZS' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_TANEVID'
|
||||
) > 0
|
||||
BEGIN
|
||||
SET @AktivTanev = N' C_TANEVID = '+ CAST(@TanevId as nvarchar) +' AND '
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
SET @AktivTanev = N''
|
||||
END
|
||||
|
||||
IF (SELECT COUNT(1)
|
||||
FROM INFORMATION_SCHEMA.COLUMNS
|
||||
WHERE TABLE_NAME = N'T_BESZERZESISZALLITOTORZS' AND TABLE_SCHEMA = 'dbo' AND COLUMN_NAME = 'C_INTEZMENYID'
|
||||
) > 0
|
||||
BEGIN
|
||||
/* T_BESZERZESISZALLITOTORZS */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_BESZERZESISZALLITOTORZS
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_BESZERZESISZALLITOTORZS
|
||||
WHERE '+@AktivTanev+' (TOROLT = ''F'') AND C_INTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
|
||||
EXECUTE sp_executesql @Sql
|
||||
|
||||
/* T_BESZERZESISZALLITOTORZS_OSSZES */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_BESZERZESISZALLITOTORZS_OSSZES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_BESZERZESISZALLITOTORZS
|
||||
WHERE C_INTEZMENYID = '+CAST(@IntezmenyId as nvarchar)
|
||||
EXECUTE sp_executesql @Sql
|
||||
END
|
||||
ELSE
|
||||
BEGIN
|
||||
/* T_BESZERZESISZALLITOTORZS */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_BESZERZESISZALLITOTORZS
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_BESZERZESISZALLITOTORZS
|
||||
WHERE '+@AktivTanev+' (TOROLT = ''F'')'
|
||||
EXECUTE sp_executesql @Sql
|
||||
|
||||
/* T_BESZERZESISZALLITOTORZS_OSSZES */
|
||||
SET @Sql = N'CREATE VIEW ['+@Schema+'].T_BESZERZESISZALLITOTORZS_OSSZES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_BESZERZESISZALLITOTORZS'
|
||||
EXECUTE sp_executesql @Sql
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
END
|
||||
|
||||
GO
|
||||
|
||||
|
||||
--------------------
|
||||
|
||||
|
||||
DECLARE intezmenytanevekCursor CURSOR LOCAL FOR
|
||||
SELECT T_INTEZMENY.ID, T_INTEZMENY.C_AZONOSITO, T_TANEV.ID
|
||||
FROM T_INTEZMENY
|
||||
INNER JOIN T_TANEV ON T_TANEV.C_INTEZMENYID = T_INTEZMENY.ID
|
||||
WHERE T_TANEV.C_AKTIV = 'T' AND T_INTEZMENY.TOROLT = 'F'
|
||||
ORDER BY T_INTEZMENY.ID
|
||||
|
||||
DECLARE @intezmenyId int, @intezmenyAzonosito nvarchar(30), @tanevId int
|
||||
|
||||
OPEN intezmenytanevekCursor
|
||||
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @intezmenyAzonosito, @tanevId
|
||||
|
||||
WHILE @@FETCH_STATUS = 0
|
||||
BEGIN
|
||||
PRINT 'INTÉZMÉNY ID: ' + CAST(@intezmenyId AS NVARCHAR(10)) + ', INTÉZMÉNY AZONOSÍTÓ: ' + CAST(@intezmenyAzonosito AS NVARCHAR(30)) + ', TANÉV ID: ' + CAST(@tanevId AS NVARCHAR(10))
|
||||
EXEC sp_AddNewSchemaViews @IntezmenyId = @intezmenyId, @IntezmenyAzonosito = @intezmenyAzonosito, @TanevId = @tanevId
|
||||
|
||||
FETCH NEXT FROM intezmenytanevekCursor INTO @intezmenyId, @intezmenyAzonosito, @tanevId
|
||||
END
|
||||
|
||||
CLOSE intezmenytanevekCursor
|
||||
DEALLOCATE intezmenytanevekCursor
|
||||
|
||||
GO
|
||||
|
||||
--------------------
|
||||
|
||||
DROP PROCEDURE [dbo].[sp_AddNewSchemaViews]
|
||||
GO
|
||||
@@ -0,0 +1,708 @@
|
||||
GO
|
||||
SET ANSI_NULLS, ANSI_PADDING, ANSI_WARNINGS, ARITHABORT, CONCAT_NULL_YIELDS_NULL, QUOTED_IDENTIFIER ON;
|
||||
|
||||
SET NUMERIC_ROUNDABORT OFF;
|
||||
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Altering [dbo].[T_BESZERZESIANYAG]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESIANYAG] ALTER COLUMN [C_EGYSEGAR] INT NULL;
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESIANYAG]
|
||||
ADD [C_ERAAZONOSITO] NVARCHAR (255) NULL,
|
||||
[C_MENNYISEG] INT NULL;
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Altering [dbo].[T_BESZERZESIANYAGTORZS]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESIANYAGTORZS] ALTER COLUMN [C_EGYSEGAR] INT NULL;
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESIANYAGTORZS]
|
||||
ADD [C_ERAAZONOSITO] NVARCHAR (255) NULL;
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Altering [dbo].[T_BESZERZESIIGENY]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESIIGENY]
|
||||
ADD [C_NKOH] CHAR (1) DEFAULT ('F') NOT NULL,
|
||||
[C_ROGZITESDATUM] DATETIME NOT NULL;
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Altering [dbo].[T_BESZERZESISZALLITO]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITO]
|
||||
ADD [C_FIZETESIMOD] NVARCHAR (50) NULL;
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Altering [dbo].[T_DASHBOARDUZENET]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_DASHBOARDUZENET]
|
||||
ADD [C_ISADMIN] CHAR (1) DEFAULT ('F') NOT NULL,
|
||||
[C_ISTANAR] CHAR (1) DEFAULT ('F') NOT NULL;
|
||||
|
||||
GO
|
||||
UPDATE T_DASHBOARDUZENET
|
||||
SET C_ISADMIN = 'T'
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Altering [dbo].[T_FELHASZNALO]...';
|
||||
|
||||
GO
|
||||
UPDATE T_FELHASZNALO
|
||||
SET C_EGYEDIAZONOSITO = N'1'
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_FELHASZNALO] ALTER COLUMN [C_EGYEDIAZONOSITO] NVARCHAR (255) NOT NULL;
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_FELHASZNALO]
|
||||
ADD [C_KRETAKURZUSOKLEVELSZAM] NVARCHAR (50) NULL;
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE TABLE [dbo].[T_BESZERZESISZALLITOTORZS] (
|
||||
[ID] INT IDENTITY (1, 1) NOT NULL,
|
||||
[C_ADOSZAM] NVARCHAR (50) NULL,
|
||||
[C_AJTO] NVARCHAR (50) NULL,
|
||||
[C_EMAILCIM] NVARCHAR (255) NULL,
|
||||
[C_EMELET] NVARCHAR (50) NULL,
|
||||
[C_HAZSZAM] NVARCHAR (50) NULL,
|
||||
[C_HELYSEGNEV] NVARCHAR (255) NULL,
|
||||
[C_IRSZAM] NVARCHAR (50) NULL,
|
||||
[C_KEPVISELONEV] NVARCHAR (255) NULL,
|
||||
[C_KOZTERULETJELLEGID] INT NULL,
|
||||
[C_KOZTERULETNEV] NVARCHAR (255) NULL,
|
||||
[C_NEV] NVARCHAR (500) NULL,
|
||||
[C_SAPKOD] NVARCHAR (50) NULL,
|
||||
[C_TELEFONSZAM] NVARCHAR (255) NULL,
|
||||
[C_FIZETESIMOD] NVARCHAR (50) NULL,
|
||||
[C_INTEZMENYID] INT NOT NULL,
|
||||
[C_TANEVID] INT NOT NULL,
|
||||
[TOROLT] CHAR (1) NOT NULL,
|
||||
[SERIAL] INT NOT NULL,
|
||||
[LASTCHANGED] DATETIME NOT NULL,
|
||||
[CREATED] DATETIME NOT NULL,
|
||||
[MODIFIER] INT NULL,
|
||||
[CREATOR] INT NULL,
|
||||
[ELOZOTANEVIREKORDID] INT NULL,
|
||||
[NNID] INT NULL,
|
||||
CONSTRAINT [PK_T_4028962] PRIMARY KEY CLUSTERED ([ID] ASC)
|
||||
);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[I_T_4028962_4028971]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_4028962_4028971]
|
||||
ON [dbo].[T_BESZERZESISZALLITOTORZS]([C_INTEZMENYID] ASC, [C_TANEVID] ASC, [C_KOZTERULETJELLEGID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[I_T_402896202_402896200]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_402896202_402896200]
|
||||
ON [dbo].[T_BESZERZESISZALLITOTORZS]([C_INTEZMENYID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[I_T_402896205_402896203]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_402896205_402896203]
|
||||
ON [dbo].[T_BESZERZESISZALLITOTORZS]([C_TANEVID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE TABLE [dbo].[T_HETES] (
|
||||
[ID] INT IDENTITY (1, 1) NOT NULL,
|
||||
[C_HETSORSZAMA] INT NOT NULL,
|
||||
[C_TANULOID] INT NOT NULL,
|
||||
[C_OSZTALYCSOPORTID] INT NOT NULL,
|
||||
[C_INTEZMENYID] INT NOT NULL,
|
||||
[C_TANEVID] INT NOT NULL,
|
||||
[TOROLT] CHAR (1) NOT NULL,
|
||||
[SERIAL] INT NOT NULL,
|
||||
[LASTCHANGED] DATETIME NOT NULL,
|
||||
[CREATED] DATETIME NOT NULL,
|
||||
[MODIFIER] INT NULL,
|
||||
[CREATOR] INT NULL,
|
||||
[ELOZOTANEVIREKORDID] INT NULL,
|
||||
[NNID] INT NULL,
|
||||
CONSTRAINT [PK_T_4029016] PRIMARY KEY CLUSTERED ([ID] ASC)
|
||||
);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[I_T_4029021_4029019]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_4029021_4029019]
|
||||
ON [dbo].[T_HETES]([C_TANULOID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[I_T_4029024_4029022]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_4029024_4029022]
|
||||
ON [dbo].[T_HETES]([C_OSZTALYCSOPORTID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[I_T_402901602_402901600]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_402901602_402901600]
|
||||
ON [dbo].[T_HETES]([C_INTEZMENYID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[I_T_402901605_402901603]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE NONCLUSTERED INDEX [I_T_402901605_402901603]
|
||||
ON [dbo].[T_HETES]([C_TANEVID] ASC);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_BESZERZESISZALLITOTORZS]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS]
|
||||
ADD DEFAULT ((0)) FOR [SERIAL];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_BESZERZESISZALLITOTORZS]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS]
|
||||
ADD DEFAULT (getdate()) FOR [CREATED];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_BESZERZESISZALLITOTORZS]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS]
|
||||
ADD DEFAULT (getdate()) FOR [LASTCHANGED];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_BESZERZESISZALLITOTORZS]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS]
|
||||
ADD DEFAULT ('F') FOR [TOROLT];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_HETES]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES]
|
||||
ADD DEFAULT ('F') FOR [TOROLT];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_HETES]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES]
|
||||
ADD DEFAULT (getdate()) FOR [CREATED];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_HETES]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES]
|
||||
ADD DEFAULT (getdate()) FOR [LASTCHANGED];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_HETES]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES]
|
||||
ADD DEFAULT ((0)) FOR [SERIAL];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating unnamed constraint on [dbo].[T_FELHASZNALO]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_FELHASZNALO]
|
||||
ADD DEFAULT ('NEWID()') FOR [C_EGYEDIAZONOSITO];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_4028962_4028971]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_4028962_4028971] FOREIGN KEY ([C_KOZTERULETJELLEGID], [C_INTEZMENYID], [C_TANEVID]) REFERENCES [dbo].[T_KOZTERULETJELLEG] ([ID], [C_ALINTEZMENYID], [C_ALTANEVID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_402896202_402896200]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_402896202_402896200] FOREIGN KEY ([C_INTEZMENYID]) REFERENCES [dbo].[T_INTEZMENY] ([ID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_402896205_402896203]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_402896205_402896203] FOREIGN KEY ([C_TANEVID]) REFERENCES [dbo].[T_TANEV] ([ID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_4029021_4029019]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_4029021_4029019] FOREIGN KEY ([C_TANULOID]) REFERENCES [dbo].[T_TANULO] ([ID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_4029024_4029022]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_4029024_4029022] FOREIGN KEY ([C_OSZTALYCSOPORTID]) REFERENCES [dbo].[T_OSZTALYCSOPORT] ([ID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_402901602_402901600]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_402901602_402901600] FOREIGN KEY ([C_INTEZMENYID]) REFERENCES [dbo].[T_INTEZMENY] ([ID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[FK_402901605_402901603]...';
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_HETES] WITH NOCHECK
|
||||
ADD CONSTRAINT [FK_402901605_402901603] FOREIGN KEY ([C_TANEVID]) REFERENCES [dbo].[T_TANEV] ([ID]);
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[T_BESZERZESIANYAG_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[T_BESZERZESIANYAG_OSSZES]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[T_BESZERZESIANYAGTORZS_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[T_BESZERZESIANYAGTORZS_OSSZES]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[T_BESZERZESIIGENY_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[T_BESZERZESIIGENY_OSSZES]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[T_BESZERZESISZALLITO_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[T_BESZERZESISZALLITO_OSSZES]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[T_FELHASZNALO_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[T_FELHASZNALO_OSSZES]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE VIEW [dbo].T_BESZERZESISZALLITOTORZS_OSSZES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_BESZERZESISZALLITOTORZS
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES_OSSZES]...';
|
||||
|
||||
|
||||
GO
|
||||
CREATE VIEW [dbo].T_HETES_OSSZES
|
||||
AS
|
||||
SELECT *
|
||||
FROM dbo.T_HETES
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[fnGetDokumentumTanuloiAlapadatok]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[fnGetDokumentumTanuloiAlapadatok]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[fnGetDokumentumKozossegiSzolgalatOsztalyonkent]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[fnGetDokumentumKozossegiSzolgalatOsztalyonkent]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[fnGetDokumentumIntezmenyPedagogusok]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[fnGetDokumentumIntezmenyPedagogusok]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[fnGetDokumentumMegtartottOrak]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[fnGetDokumentumMegtartottOrak]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[fnGetDokumentumTanulokFeljegyzesei]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[fnGetDokumentumTanulokFeljegyzesei]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Refreshing [dbo].[fnGetTanuloTanugyiAdatai]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE sp_refreshsqlmodule N'[dbo].[fnGetTanuloTanugyiAdatai]';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[ID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord egyedi azonosítója, generált IDENTITY(1, 1) (kivéve altáblák esetén, ahol a főtábla ID-ját kapja)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'ID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[C_INTEZMENYID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'Az intézmény ID-ja, amihez a rekord tartozik', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'C_INTEZMENYID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[C_TANEVID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A tanév ID-ja, amihez a rekord tartozik', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'C_TANEVID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[TOROLT].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord logikai töröltségét jelző flag', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'TOROLT';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[SERIAL].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'Minden C# kódból történő módosítás esetén eggyel nő az értéke. Hogy párhuzamos módosítás esetnán ne íródjanak felül az adatok', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'SERIAL';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[LASTCHANGED].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N' A rekord utolsó módosításának időpontja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'LASTCHANGED';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[CREATED].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord létrehozásának időpontja ', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'CREATED';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[MODIFIER].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekordot utoljára módosító felhasználó ID-ja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'MODIFIER';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[CREATOR].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekordot létrehozó felhasználó ID-ja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'CREATOR';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[ELOZOTANEVIREKORDID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord előző tanévben lévő ID-ja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'ELOZOTANEVIREKORDID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_BESZERZESISZALLITOTORZS].[NNID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord régi, Neptun Naplóban lévő ID-ja. (migrációval került be)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_BESZERZESISZALLITOTORZS', @level2type = N'COLUMN', @level2name = N'NNID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[ID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord egyedi azonosítója, generált IDENTITY(1, 1) (kivéve altáblák esetén, ahol a főtábla ID-ját kapja)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'ID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[C_INTEZMENYID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'Az intézmény ID-ja, amihez a rekord tartozik', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'C_INTEZMENYID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[C_TANEVID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A tanév ID-ja, amihez a rekord tartozik', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'C_TANEVID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[TOROLT].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord logikai töröltségét jelző flag', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'TOROLT';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[SERIAL].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'Minden C# kódból történő módosítás esetén eggyel nő az értéke. Hogy párhuzamos módosítás esetnán ne íródjanak felül az adatok', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'SERIAL';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[LASTCHANGED].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N' A rekord utolsó módosításának időpontja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'LASTCHANGED';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[CREATED].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord létrehozásának időpontja ', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'CREATED';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[MODIFIER].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekordot utoljára módosító felhasználó ID-ja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'MODIFIER';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[CREATOR].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekordot létrehozó felhasználó ID-ja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'CREATOR';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[ELOZOTANEVIREKORDID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord előző tanévben lévő ID-ja', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'ELOZOTANEVIREKORDID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Creating [dbo].[T_HETES].[NNID].[MS_Description]...';
|
||||
|
||||
|
||||
GO
|
||||
EXECUTE dev.uspAddOrUpdateExtendedProperty @name = N'MS_Description', @value = N'A rekord régi, Neptun Naplóban lévő ID-ja. (migrációval került be)', @level0type = N'SCHEMA', @level0name = N'dbo', @level1type = N'TABLE', @level1name = N'T_HETES', @level2type = N'COLUMN', @level2name = N'NNID';
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Checking existing data against newly created constraints';
|
||||
|
||||
|
||||
|
||||
GO
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS] WITH CHECK CHECK CONSTRAINT [FK_4028962_4028971];
|
||||
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS] WITH CHECK CHECK CONSTRAINT [FK_402896202_402896200];
|
||||
|
||||
ALTER TABLE [dbo].[T_BESZERZESISZALLITOTORZS] WITH CHECK CHECK CONSTRAINT [FK_402896205_402896203];
|
||||
|
||||
ALTER TABLE [dbo].[T_HETES] WITH CHECK CHECK CONSTRAINT [FK_4029021_4029019];
|
||||
|
||||
ALTER TABLE [dbo].[T_HETES] WITH CHECK CHECK CONSTRAINT [FK_4029024_4029022];
|
||||
|
||||
ALTER TABLE [dbo].[T_HETES] WITH CHECK CHECK CONSTRAINT [FK_402901602_402901600];
|
||||
|
||||
ALTER TABLE [dbo].[T_HETES] WITH CHECK CHECK CONSTRAINT [FK_402901605_402901603];
|
||||
|
||||
|
||||
GO
|
||||
PRINT N'Update complete.';
|
||||
|
||||
|
||||
GO
|
||||
|
||||
|
||||
--------------------
|
||||
|
||||
PRINT '--- intézményi view-k (dbo táblákkal megegyező nevű és a tábla_OSSZES nevűek) frissítése ---'
|
||||
|
||||
DECLARE @viewname nvarchar(100), @pureview nvarchar(100)
|
||||
|
||||
DECLARE semaviewk CURSOR LOCAL FOR
|
||||
SELECT '['+TABLE_SCHEMA + '].[' + TABLE_NAME + ']', TABLE_NAME
|
||||
FROM INFORMATION_SCHEMA.TABLES
|
||||
WHERE TABLE_TYPE = 'VIEW' and TABLE_SCHEMA LIKE 'KR[_]%[_]Schema'
|
||||
AND TABLE_NAME in ('T_BESZERZESIANYAG', 'T_BESZERZESIANYAG_OSSZES'
|
||||
,'T_BESZERZESIANYAGTORZS', 'T_BESZERZESIANYAGTORZS_OSSZES'
|
||||
,'T_BESZERZESIIGENY', 'T_BESZERZESIIGENY_OSSZES'
|
||||
,'T_BESZERZESISZALLITO', 'T_BESZERZESISZALLITO_OSSZES'
|
||||
,'T_DASHBOARDUZENET', 'T_DASHBOARDUZENET_OSSZES'
|
||||
,'T_FELHASZNALO', 'T_FELHASZNALO_OSSZES' ) -- ha csak néhány VIEW frissült, akkor a gyorsabb futásért ide fel lehet sorolni
|
||||
ORDER BY TABLE_SCHEMA, TABLE_NAME
|
||||
|
||||
OPEN semaviewk
|
||||
FETCH NEXT FROM semaviewk INTO @viewname, @pureview
|
||||
|
||||
WHILE @@FETCH_STATUS = 0 BEGIN
|
||||
PRINT @viewname
|
||||
EXEC sp_refreshview @viewname
|
||||
|
||||
FETCH NEXT FROM semaviewk INTO @viewname, @pureview
|
||||
END
|
||||
|
||||
CLOSE semaviewk
|
||||
DEALLOCATE semaviewk
|
||||
GO
|
||||
|
||||
--------------------
|
||||
|
||||
EXEC dev.sp_Global_GenerateAsyncAuditTriggerAll
|
||||
GO
|
||||
|
||||
|
||||
ALTER QUEUE auditLog.[AuditQueue]
|
||||
WITH ACTIVATION
|
||||
(
|
||||
STATUS = ON,
|
||||
PROCEDURE_NAME = auditLog.usp_AuditProcessing,
|
||||
MAX_QUEUE_READERS = 10,
|
||||
EXECUTE AS 'Kreta_tech_user'
|
||||
);
|
||||
|
||||
GO
|
||||
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user