有没有一种干净的方法来克隆SQL中具有索引(自动增量)的记录。我想克隆除索引外的所有字段。我目前必须枚举每个字段,并在插入选择中使用它,而我宁愿不明确列出所有字段,因为它们可能随时间而变化。
除非您想进入动态SQL,否则不可以。既然您写的是“干净”,我就不做。
编辑:
由于他要求一个动态的SQL示例,我将对此进行介绍。我目前尚未连接到任何数据库,因此这是我的首要任务,几乎可以肯定需要修订。但希望它能抓住事物的精神:
-- Get list of columns in table
SELECT INTO #t
EXEC sp_columns @table_name = N'TargetTable'
-- Create a comma-delimited string excluding the identity column
DECLARE @cols varchar(MAX)
SELECT @cols = COALESCE(@cols+',' ,'') + COLUMN_NAME FROM #t WHERE COLUMN_NAME <> 'id'
-- Construct dynamic SQL statement
DECLARE @sql varchar(MAX)
SET @sql = 'INSERT INTO TargetTable (' + @cols + ') ' +
'SELECT ' + @cols + ' FROM TargetTable WHERE SomeCondition'
PRINT @sql -- for debugging
EXEC(@sql)
主要内容:示例在某些情况下,您可能需要一个表的完整、精确副本,也即克隆表(复制表)。我们首先想到的是使用 CREATE TABLE 命令创建一张新表,然后使用 SELECT 命令从旧表中选取所有数据,并使用 INSERT 命令插入到新表中。但是这种做法可能达不到您的目的,因为副本必须包含相同的索引、约束、默认值等。 如果您使用 MySQL 数据库,可以借助 SHOW CREATE TABLE 命令,该命令用来展
问题内容: 我有一个按TRANSACTION_DATE_TIME分区的表。 表中有一列:ID。 我想为分区方案上的ID创建唯一索引: 但是SQL表示“唯一索引的分区列必须是索引键的子集”。 我真的不需要此索引中的TRANSACTION_DATE_TIME列。 如何在不使用TRANSACTION_DATE_TIME列的情况下创建索引? 问题答案: 或者你创建 非 -partitioned索引,或者您
以下两者之间有区别吗: 以及: 在这两种情况下,名称是否唯一?索引唯一时意味着什么? 编辑:Postgres是唯一的约束,而索引没有回答我的问题。它考虑了FK的情况。我的问题与FK无关。我只想知道在这个例子中,这两个操作是否等价,其中不涉及FK。
CreateIndexes 根据struct中的tag来创建索引 CreateUniques 根据struct中的tag来创建唯一索引
问题内容: 就性能而言,MySQL唯一索引和非唯一索引有什么区别? 假设我要在2列的组合上创建索引,并且该组合是唯一的,但是我创建了一个非唯一的索引。这会对MySQL使用的性能或内存产生重大影响吗? 同样的问题, 主 键和 唯一 索引之间有区别吗? 问题答案: UNIQUE和PRIMARY KEY是 约束 ,而不是索引。尽管大多数数据库通过使用索引来实现这些约束。除了索引之外,约束的额外开销也微不
我构建了一个REST服务,发现使用Gson从ObjectId生成的JSON字符串的格式与Spring-Boot生成的格式不同。如果我以GSON格式将现有文档的_id字段的ObjectId发送到REST服务,并使用MongoRepository的save函数将其保存到集合中,即使在这样的字段上设置了唯一的索引,仍会插入具有duplicated_id的新文档。但是,如果我以spring-boot生成的