Sql server 2008 插入一行或多行
我有以下sql代码。是否保证MyTable将按MyTable.data排序?基本上问题是,如果我用一个INSERT语句插入多行,其他连接可以在我插入的中间插入其他东西吗?< /P>Sql server 2008 插入一行或多行,sql-server-2008,stored-procedures,insert,Sql Server 2008,Stored Procedures,Insert,我有以下sql代码。是否保证MyTable将按MyTable.data排序?基本上问题是,如果我用一个INSERT语句插入多行,其他连接可以在我插入的中间插入其他东西吗?< /P> CREATE TABLE MyTable( id bigint IDENTITY(1,1) NOT NULL, data uniqueidentifier NOT NULL, CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED (id ASC)
CREATE TABLE MyTable(
id bigint IDENTITY(1,1) NOT NULL,
data uniqueidentifier NOT NULL,
CONSTRAINT [PK_MyTable] PRIMARY KEY CLUSTERED (id ASC)
)
DECLARE @data uniqueidentifier
SET @data = NEWID()
WITH Dummy AS
(
SELECT @data as data, 1 as n
UNION ALL
SELECT @data, n + 1
FROM Dummy
WHERE n < 100
)
INSERT INTO MyTable(data)
SELECT data FROM Dummy
谢谢。如果我误解了你的问题,请原谅。但如果您所追求的是主键,则永远不应该依赖主键来排序数据。这不是主键的用途。数据的排序应该使用ORDERBY子句完成,或者使用您专门介绍的列来跟踪顺序。主键列用于识别数据,而不是排序。如果我误解了您的问题,请原谅。但如果您所追求的是主键,则永远不应该依赖主键来排序数据。这不是主键的用途。数据的排序应该使用ORDERBY子句完成,或者使用您专门介绍的列来跟踪顺序。主键列用于标识数据,而不是排序。除非将SQL Server数据库置于单用户模式并确保没有其他人连接,否则不能保证这些行将连续插入
但问题是:为什么这对你很重要??在SQL Server中,您永远不应该依赖系统给定的顺序-如果您需要顺序,使用显式排序方式-这是以有序方式获取行的唯一可靠方法。除非将SQL Server数据库置于单用户模式并确保没有其他人连接,否则无法保证这些行将连续插入
但问题是:为什么这对你很重要??在SQL Server中,您永远不应该依赖系统给定的顺序—如果需要顺序,请使用显式的order BY—这是以有序方式获取行的唯一可靠方法。根据定义,SQL表没有定义的顺序。但我认为这不是你要问的。我想您是在问另一个进程是否可以在其中一个插入之间插入一行。答案是肯定的,除非您锁定了整个表,因为并发原因,您可能不想这样做。根据定义,SQL表没有定义的顺序。但我认为这不是你要问的。我想您是在问另一个进程是否可以在其中一个插入之间插入一行。答案是肯定的,除非您锁定了整个表,因为并发原因,您可能不想这样做