Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/sql-server-2008/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 2008 插入一行或多行_Sql Server 2008_Stored Procedures_Insert - Fatal编程技术网

Sql server 2008 插入一行或多行

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)

我有以下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)
)

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表没有定义的顺序。但我认为这不是你要问的。我想您是在问另一个进程是否可以在其中一个插入之间插入一行。答案是肯定的,除非您锁定了整个表,因为并发原因,您可能不想这样做