Copiați rândul oricărui tabel

Nu ai avut niciodată dorința de a spune MS SQL

și ar fi copiat-o? Nu că ați enumerat toate coloanele din blocurile INSERT și SELECT. Dimpotrivă, ați scris: vă rog, copiați-vă. Ar fi minunat? Și dacă schimbați dintr-o dată aspectul mesei, nu trebuie să mai listați o coloană.

Copiați rândul oricărui tabel

Scuze, a spus că un indice unic este împiedicat. Bine. De data aceasta vom cere politicos:

Copiați rândul oricărui tabel

Asta e tot. MSSQL a copiat doar rândul tabelului și nu am fost nevoiți să specificăm coloanele din INSERT sau SELECT. Uneori se întâmplă foarte util.

Dacă nu puteți aștepta să repetați, căutați instrucțiuni în partea de jos a paginii.

Stocăm schema de tabelă într-un tabel special din baza noastră de date "sistem". Când vine momentul potrivit, putem extrage un set de coloane în formă de text, adică col1, col2, Col3 și de a crea siruri de caractere dinamice-interogare orb, cum ar fi INSERT INTO și NASHA_TABLITSA și (col1, col2, Col3) și SELECT și col1, col2, Col3 și FROM și NASHA_TABLITSA și unde $ = IDENTITATE și OUR_PRODUCT_ID_VALUE. Mai mult decât atât, dacă doriți să modificați unele dintre datele pentru noul construi, vom înlocui doar numele unor coloane Coln valori explicite, cum ar fi SELECT col1, „valoare nouă“, Col3 DE LA NASHA_TABLITSA.

De îndată ce primim cererea, executăm-o și se întâmplă magie.

Dacă sunteți interesat, cum este aranjat - vă întreb.

cerinţe

Scriptul implică lucrul cu expresii regulate, funcția de agregare a concatenării și matrice. CLR-ul DLL necesar pentru aceasta este postat aici.

Stocăm schemele de tabel într-un singur loc

Dacă sunteți familiarizat cu înregistrarea anterioară. veți observa că, în loc să afișăm coloanele unei singure tabele, salvăm graficele tuturor tabelelor tuturor bazelor de date fără excepție.

Așa că salvăm schița tabelului.

Vom crea un tabel temporar și păstrați-l cu privire la foaia de lucru noastră (cel în care copia). De asemenea, definim coloana IDENTITY. Apoi vom pregăti sufixul și prefixul (literal_prefix și literal_suffix), în cazul unor noi valori explicite. De exemplu, INSERT INTO tabel (int_col, varchar_col, varbinary_col) SELECT 1, 'text', 0xCA010. Caracterele "și 0x sunt doar ele. Împărtășim matrice @todo (de exemplu, a = 10; b = text nou; c = valoarea) tabel pentru a crea o pereche de chei => valoare. În ultimul tabel, înlocuiți numele coloanelor cu noile valori promovate. Coloanele rămase rămân neschimbate.

Ultimul pas este de a compila interogarea utilizând funcția de agregare SYSDB.dbo.list.

Dacă doriți să repetați funcționalitatea descrisă, trebuie să efectuați patru pași:

  1. Creați o bază de date "sistem". L-am numit SYSDB;
  2. Conectați funcțiile CLR de aici;
  3. Executați scripturi:
    • Salvați informații despre tipurile de date;
    • Creați și executați procedura de actualizare a tabelelor de schemă.
    • Creați o procedură pentru copierea unui șir.
  4. Pentru a utiliza.

Articole similare