我想知道当这些字段 doctorId、dateApt、hourApt 具有相同的日期和小时以及 doctorId 时,我的表定义中不允许创建新行的条件是什么。
ex: aptId ClientId doctorId dateApt TimeApt IsAvaiable
1 Null 1 2014/01/29 09:00 True
2 Null 1 2014/01/29 09:00 True <== not allowing this
3 Null 1 2014/01/29 10:00 True <== ok bc not same hour and date
4 Null 2 2014/01/29 09:00 True <== ok not same doctorId
这是表定义。
CREATE TABLE [dbo].[Appointement] (
[aptId] INT IDENTITY (1, 1) NOT NULL,
[clientId] INT NULL,
[doctorId] INT NOT NULL,
[dateApt] DATE NOT NULL,
[hourApt] TIME (7) NOT NULL,
[IsAvailable] BIT NULL,
PRIMARY KEY CLUSTERED ([rdvId] ASC),
CONSTRAINT [fk_doctorID] FOREIGN KEY ([doctorId]) REFERENCES [dbo].[Doctor] ([Id]),
CONSTRAINT [fk_clientID] FOREIGN KEY ([clientId]) REFERENCES [dbo].[User] ([Id_user])
);
谢谢
最佳答案
在这些列上添加唯一约束:
ALTER TABLE dbo.Appointement
ADD CONSTRAINT uAppt UNIQUE (doctorId, dateApt, hourAp)
或者在创建表时添加:
CREATE TABLE [dbo].[Appointement] (
[aptId] INT IDENTITY (1, 1) NOT NULL,
[clientId] INT NULL,
[doctorId] INT NOT NULL,
[dateApt] DATE NOT NULL,
[hourApt] TIME (7) NOT NULL,
[IsAvailable] BIT NULL,
PRIMARY KEY CLUSTERED ([rdvId] ASC),
CONSTRAINT [fk_doctorID] FOREIGN KEY ([doctorId]) REFERENCES [dbo].[Doctor] ([Id]),
CONSTRAINT [fk_clientID] FOREIGN KEY ([clientId]) REFERENCES [dbo].[User] ([Id_user]),
CONSTRAINT uAppt UNIQUE (doctorId, dateApt, hourAp)
);
关于c# - 缺少表定义的 SQL 条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21436629/