小编Apo*_*sis的帖子

如何在只有 IDENTITY 列的表中插入?

给定一个只有 IDENTITY 列的表,如何插入新行?我尝试了以下方法:

INSERT INTO TABLE
(Syntax error)

INSERT INTO TABLE VALUES()
(Syntax error)

INSERT INTO TABLE (Id) VALUES()
(Syntax error)
Run Code Online (Sandbox Code Playgroud)

我正在测试一些东西,只需要 IDENTITY 列。它不是用于生产。否则,这样的表可以用作序列生成器,不需要其他列。

sql-server identity

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

如何强制使用可为空的外键?

我有两个表之间的关系。外键表可以在主表中有一行相关。有没有办法将 FK 列的值强制为 NULL 或主表中 PK 列的值之一?

sql-server-2008 foreign-key database-design sql-server

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

一对至多一个关系还是多个空列?

我有一个包含许多属性的表,可以将这些属性分组为逻辑组,因此将这些属性放在单独的表中的想法似乎很有吸引力。逻辑组并不代表实体本身。设置组中的一个属性后,也必须设置该组中的大多数其余属性(但不是全部)。组的字段类型一般为VARCHAR(15-20). 也没有BLOBorTEXT字段。

逻辑组不代表子类型,因为它们并不相互排斥。

该实体对阅读的要求多于对写作的要求。因此,一张大桌子看起来很合适。此外,这样就可以避免查询中的连接。我不喜欢这种方法的部分是大量可为空的字段。

寻求专家建议。

database-design

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

SELECT 锁仅用于插入

我需要获取MAX交易中某个字段的聚合。我在事务中进一步使用此值。我想避免在整个表中插入,而我正在从中获取MAX事务完成时。

我研究了可用的隔离模式和锁定提示。最接近的似乎是TABLOCKX,这是唯一避免在整个表中插入(也更新和选择)的方法。

由于我不会受到表中更新或选择的影响,我希望避免在事务期间仅插入。这个有可能?

更新:执行的字段MAX仅在插入时设置,因此没有获得更新结果过时的风险。

我正在使用 SQL Server 2000。

sql-server sql-server-2000 hints isolation-level

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