forked from seanogt/tech-test
-
Notifications
You must be signed in to change notification settings - Fork 0
/
DBObjects.sql
121 lines (90 loc) · 3 KB
/
DBObjects.sql
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
USE [Customers]
GO
/****** Object: Table [dbo].[Customer] Script Date: 2020/07/17 8:38:10 AM ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Customer](
[CustomerId] [int] IDENTITY(1,1) NOT NULL,
[Name] [varchar](100) NOT NULL,
[Surname] [varchar](100) NOT NULL,
[ContactNo] [varchar](100) NULL,
[DateOfBirth] [datetime] NULL,
[Country] [varchar](100) NULL,
PRIMARY KEY CLUSTERED
(
[CustomerId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[CustomerOrders](
[CustomerOrderId] [int] IDENTITY(1,1) NOT NULL,
[OrderId] [int] NOT NULL,
[CustomerId] [int] NOT NULL,
[Date] [datetime] NOT NULL,
[Collected] [bit] NOT NULL
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[CustomerOrders] WITH CHECK ADD FOREIGN KEY([CustomerId])
REFERENCES [dbo].[Customer] ([CustomerId])
GO
ALTER TABLE [dbo].[CustomerOrders] WITH CHECK ADD FOREIGN KEY([OrderId])
REFERENCES [dbo].[Orders] ([OrderId])
GO
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE TABLE [dbo].[Orders](
[OrderId] [int] IDENTITY(1,1) NOT NULL,
[Amount] [float] NOT NULL,
[VAT] [float] NOT NULL,
[Date] [datetime] NOT NULL,
PRIMARY KEY CLUSTERED
(
[OrderId] ASC
)WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON, OPTIMIZE_FOR_SEQUENTIAL_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
GO
ALTER TABLE [dbo].[Orders] ADD CONSTRAINT [DF_Orders_Date] DEFAULT (getdate()) FOR [Date]
GO
--@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[SaveOrder]
@CustomerId INT,
@Amount FLOAT,
@VAT FLOAT
AS
BEGIN
SET NOCOUNT ON;
BEGIN TRANSACTION SaveOrder;
INSERT INTO Orders([Amount], [VAT], [Date])
VALUES(@Amount, @VAT, GETDATE())
IF @@ERROR <> 0
BEGIN
ROLLBACK
RAISERROR ('Error in saving the order in the Orders table.', 16, 1)
RETURN
END
DECLARE @OrderId INT = (SELECT SCOPE_IDENTITY());
INSERT INTO CustomerOrders([OrderId], [CustomerId], [Date], [Collected])
VALUES(@OrderId, @CustomerId, GETDATE(), 0)
IF @@ERROR <> 0
BEGIN
ROLLBACK
RAISERROR ('Error in saving the order in the CustomerOrders table.', 16, 1)
RETURN
END
COMMIT TRANSACTION SaveOrder;
END
GO