sql >> Database >  >> RDS >> Sqlserver

Hernoem een ​​door de gebruiker gedefinieerd gegevenstype in SQL Server (T-SQL)

In SQL Server kunt u de sp_rename . gebruiken opgeslagen procedure om een ​​door de gebruiker gemaakt object in de huidige database te hernoemen, inclusief een door de gebruiker gedefinieerd gegevenstype.

Syntaxis

De syntaxis gaat als volgt:

EXEC sp_rename 'old_datatype', 'new_datatype', 'USERDATATYPE';

Waar old_datatype is de naam van het door de gebruiker gedefinieerde gegevenstype waarvan u de naam wilt wijzigen, en new_datatype is de nieuwe naam die u eraan wilt geven.

Voorbeeld

Laten we eens kijken naar de huidige door de gebruiker gedefinieerde gegevenstypen in onze database.

SELECT 
  name,
  max_length,
  [precision],
  scale,
  is_user_defined
FROM sys.types
WHERE is_user_defined = 1;

Resultaat:

 +----------+--------------+-------------+---------+-------------------+
 | name     | max_length   | precision   | scale   | is_user_defined   |
 |----------+--------------+-------------+---------+-------------------|
 | clientid | 8            | 0           | 0       | 1                 |
 +----------+--------------+-------------+---------+-------------------+ 

We hebben één door de gebruiker gedefinieerd gegevenstype genaamd clientid .

Laten we het hernoemen naar clientcode .

EXEC sp_rename 'clientid', 'clientcode', 'USERDATATYPE';

Uitvoeren dat de naam hernoemt naar clientcode . Mogelijk ziet u het volgende bericht:

Caution: Changing any part of an object name could break scripts and stored procedures.

Dit geeft ons in feite de waarschuwing dat als we scripts van opgeslagen procedures hebben die verwijzen naar ons hernoemde object, ze zullen breken en dat we ze moeten bijwerken.

U vraagt ​​zich misschien af ​​of dit betekent dat bestaande kolommen die dit gegevenstype gebruiken, nu worden verbroken?

Gelukkig zouden bestaande kolommen in orde moeten zijn.

Na het hernoemen van het door de gebruiker gedefinieerde gegevenstype, blijven alle kolommen die dat gegevenstype gebruiken dat gegevenstype gebruiken met de nieuwe naam. Alle beperkingen van het gegevenstype (zoals lengte, enz.) blijven gehandhaafd.

Laten we nu onze lijst met door de gebruiker gedefinieerde gegevenstypen opnieuw bekijken:

SELECT 
  name,
  max_length,
  [precision],
  scale,
  is_user_defined
FROM sys.types
WHERE is_user_defined = 1;

Resultaat:

+------------+--------------+-------------+---------+-------------------+
 | name       | max_length   | precision   | scale   | is_user_defined   |
 |------------+--------------+-------------+---------+-------------------|
 | clientcode | 8            | 0           | 0       | 1                 |
 +------------+--------------+-------------+---------+-------------------+ 

Zoals verwacht is het hernoemd zoals gespecificeerd.


  1. Mislukt bouwwiel voor psycopg2 - MacOSX met virtualenv en pip

  2. R12.2 Online patchcyclus Samenvatting

  3. Een maand toevoegen aan een datum in SQLite

  4. Oracle database herstel