Mysql
 sql >> Base de données >  >> RDS >> Mysql

Enregistrement de clone SQL avec un index unique

Non, sauf si vous souhaitez vous lancer dans le SQL dynamique. Puisque vous avez écrit "propre", je suppose que non.

Modifier : Puisqu'il a demandé un exemple SQL dynamique, je vais essayer. Je ne suis connecté à aucune base de données pour le moment, donc cela me vient à l'esprit et nécessitera certainement une révision. Mais j'espère qu'il capture l'esprit des choses :

-- 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)