相关疑难解决方法(0)

在INSERT之前检查UNIQUE约束与检查

我有一个SQL服务器表RealEstate与列 - Id,属性,Property_Value.该表有大约5-10百万行,并且将来可以增加更多.我只想在此表中不存在Id,Property,Property_Value的组合时插入行.

示例表 -

1,Rooms,5
1,Bath,2
1,Address,New York
2,Rooms,2
2,Bath,1
2,Address,Miami
Run Code Online (Sandbox Code Playgroud)

2,Address,Miami不应允许插入.但是,2,Price,2billion没关系.我很想知道这是"最好的"方法,为什么这样做.为什么这部分对我来说最重要.两种检查方式是 -

  1. 在应用程序级别 - 应用程序应在插入行之前检查是否存在行.
  2. 在数据库级别 - 在所有3列上设置唯一约束,让数据库执行检查而不是人员/应用程序.

是否有任何一种情况会比另一种更好?

谢谢.

PS:我知道有一个类似的问题,但它没有回答我的问题 - 唯一约束与预检查 另外,我认为UNIQUE适用于所有数据库,所以我认为我不应该删除mysql和oracle标签.

mysql sql sql-server oracle

25
推荐指数
2
解决办法
1万
查看次数

检查约束SQL中的IF

我有这张桌子..

CREATE TABLE [dbo].[Tipo_Servicios_Info](
[TSI_TS_Id] [int] NOT NULL,
[TS_Tar_Id] [int] NOT NULL,
[TS_PDI_Id] [int] NOT NULL,
[TSI_Descripcion] varchar(100),
[TSI_FechaIni] date not null,
[TSI_FechaFin] date not null,
[TSI_HoraMin] time,
[TSI_HoraMax] time,
[TSI_Duracion] varchar(50) not null,
[TSI_Unidad] varchar(50) not null,
[TSI_Cantidad] int not null,

CONSTRAINT [PK_TIPO_SERVICIOS_INFO] PRIMARY KEY CLUSTERED 
(
[TSI_TS_Id] ASC,
[TS_Tar_Id] ASC,
[TS_PDI_Id] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF,
       ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO
Run Code Online (Sandbox Code Playgroud)

有一些检查..

ALTER TABLE Dbo.Tipo_Servicios_Info …
Run Code Online (Sandbox Code Playgroud)

sql-server check-constraints

1
推荐指数
1
解决办法
6461
查看次数

标签 统计

sql-server ×2

check-constraints ×1

mysql ×1

oracle ×1

sql ×1