Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

SQL DEFAULT Ograniczenie do wstawiania kolumny z wartością domyślną do tabeli SQL Server

Aby wstawić dane do tabeli zawierającej kolumny z domyślnymi ograniczeniami, możemy użyć ograniczenia DEFAULT do domyślnej wartości w tabeli. W tym artykule omówimy następujące aspekty:

  • Ograniczenie DOMYŚLNE i wymagane uprawnienia do ich utworzenia.
  • Dodawanie ograniczenia DEFAULT podczas tworzenia nowej tabeli.
  • Dodawanie ograniczenia DEFAULT do istniejącej tabeli.
  • Modyfikowanie i przeglądanie definicji ograniczenia za pomocą skryptów T-SQL i SSMS.

Co to jest DEFAULT CONSTRAINT w SQL Server?

Domyślne ograniczenie określa domyślną wartość kolumny.

Kiedy wykonujemy instrukcję INSERT, ale nie określamy żadnej wartości dla kolumny z utworzonym domyślnym ograniczeniem, SQL Server wstawia domyślną wartość określoną w definicji ograniczenia DEFAULT.

Aby utworzyć domyślne ograniczenie, potrzebujesz uprawnienia ALTER TABLE i CREATE TABLE.

Dodawanie wiązania DOMYŚLNEGO podczas tworzenia nowej tabeli

Istnieje tabela o nazwie Szczegóły sprzedaży . Gdy wstawiamy dane do tabeli bez określenia Ilość_sprzedaży wartość kolumny, zapytanie musi wstawić zero. W tym celu tworzę domyślne ograniczenie o nazwie DF_SalesDetails_SaleQty na Ilość_wyprzedaży kolumna.

USE demodatabase 
go 
CREATE TABLE salesdetails 
  ( 
     id           INT IDENTITY (1, 1), 
     product_code VARCHAR(10), 
     sale_qty     INT CONSTRAINT df_salesdetails_saleqty DEFAULT 0 
  ) 

Teraz przetestujmy zachowanie ograniczenia, wstawiając do niego kilka fikcyjnych rekordów. Wykonaj następujące zapytanie:

INSERT INTO salesdetails 
            (product_code) 
VALUES     ('PROD0001')

Użyj następującego zapytania, aby wyświetlić dane z tabeli:

INSERT INTO salesdetails 
            (product_code) 
VALUES     ('PROD0001')

Wyjście

Jak widać, zero został wstawiony do Sale_Qty kolumna.

Tworząc tabelę nie podajemy nazwy ograniczenia DEFAULT. SQL Server tworzy ograniczenie z unikatową nazwą wygenerowaną przez system.

Utwórz tabelę, używając poniższego zapytania:

USE demodatabase 
go 
CREATE TABLE salesdetails 
  ( 
     id           INT IDENTITY (1, 1), 
     product_code VARCHAR(10), 
     sale_qty     INT DEFAULT 0 
  )

Uruchom następujący skrypt, aby wyświetlić nazwę ograniczenia:

SELECT NAME             [Constraint name], 
       parent_object_id [Table Name], 
       type_desc        [Object Type], 
       definition       [Constraint Definition] 
FROM   sys.default_constraints 

Wyjście

SQL Server utworzył ograniczenie z nazwą wygenerowaną przez system.

Dodawanie ograniczenia DOMYŚLNEGO do istniejącej tabeli

Aby dodać ograniczenie do istniejącej kolumny tabeli, używamy ZMIEŃ OGRANICZENIE DODANIA TABELI oświadczenie:

ALTER TABLE [tbl_name] 
  ADD CONSTRAINT [constraint_name] DEFAULT [default_value] FOR [Column_name]

W składni

  • nazwa_tabeli :określ nazwę tabeli, w której chcesz dodać domyślne ograniczenie.
  • nazwa_ograniczenia :określ żądaną nazwę ograniczenia.
  • nazwa_kolumny: określ nazwę kolumny, w której chcesz utworzyć domyślne ograniczenie.
  • wartość_domyślna: określ wartość, którą chcesz wstawić – liczbę całkowitą, znak lub ciąg znaków.

Gdy nie określimy wartości nazwa_kolumny w instrukcji INSERT, wstawi ona wartość określoną w wartość_domyślna parametr.

Najpierw dodajmy nazwa_produktu kolumnę w Szczegóły sprzedaży :

ALTER TABLE salesdetails 
  ADD product_name VARCHAR(500) 

Wstawiamy dane do tabeli bez określania wartości kolumny Product_name. Zapytanie musi zawierać nie dotyczy .

W tym celu tworzę domyślne ograniczenie o nazwie DF_SalesDetails_ProductName w nazwa_produktu kolumna. Następujące zapytanie tworzy domyślne ograniczenie:

ALTER TABLE dbo.salesdetails 
  ADD CONSTRAINT df_salesdetails_productname DEFAULT 'N/A' FOR product_name 

Przyjrzyjmy się teraz zachowaniu ograniczającemu. Wstaw rekord bez określania nazwy produktu:

INSERT INTO salesdetails 
            (product_code, 
             product_name, 
             sale_qty) 
VALUES     ('PROD0002', 
            'Dell Optiplex 7080', 
            20) 

INSERT INTO salesdetails 
            (product_code, 
             sale_qty) 
VALUES     ('PROD0003', 
            50)

Po wstawieniu rekordu uruchom zapytanie SELECT, aby wyświetlić dane:

USE demodatabase 
go 
SELECT * 
FROM   salesdetails 
go

Wyjście

Jak widać na powyższym obrazku, wartość Product_name kolumna dla PROD0003 jest nie dotyczy .

Modyfikowanie ograniczenia DOMYŚLNEGO za pomocą skryptów T-SQL

Możemy zmienić definicję domyślnego ograniczenia:najpierw usuń istniejące ograniczenie, a następnie utwórz ograniczenie z inną definicją.

Załóżmy, zamiast wstawiać Nie dotyczy , chcemy wstawić Nie dotyczy . Najpierw musimy usunąć DF_SalesDetails_ProductName ograniczenie. Wykonaj następujące zapytanie:

ALTER TABLE dbo.salesdetails 
  DROP CONSTRAINT df_salesdetails_productname

Gdy ograniczenie zostanie usunięte, uruchom zapytanie, aby utworzyć ograniczenie:

ALTER TABLE dbo.salesdetails 
  ADD CONSTRAINT df_salesdetails_productname DEFAULT 'Not Applicable' FOR 
  product_name 

Teraz wstawmy rekord bez określania nazwy produktu:

INSERT INTO salesdetails 
            (product_code, 
             sale_qty) 
VALUES     ('PROD0004', 
            10)

Uruchom instrukcję SELECT, aby wyświetlić dane z Szczegóły sprzedaży tabela:

USE demodatabase 
go 
SELECT * 
FROM   salesdetails 
go

Wyjście

Jak widać, wartość Product_name kolumna nie dotyczy.

Wyświetlanie wiązania DOMYŚLNEGO za pomocą programu SSMS

Możemy wyświetlić listę ograniczeń DEFAULT za pomocą SQL Server Management Studio i odpytując dynamiczne widoki zarządzania.

Otwórz SSMS i rozwiń Bazy danych > Baza danych Demo > Szczegóły sprzedaży > Ograniczenie :

Możesz zobaczyć dwa ograniczenia o nazwie DF_SalesDetails_SaleQty i DF_SalesDetails_ProductName utworzony.

Inny sposób przeglądania ograniczeń przez zapytanie sys.default_constraints . Następujące zapytanie wypełnia listę domyślnych ograniczeń i ich definicji:

SELECT NAME                  [Constraint name], 
       Object_name(parent_object_id)[Table Name], 
       type_desc             [Consrtaint Type], 
       definition            [Constraint Definition] 
FROM   sys.default_constraints

Wyjście

Możemy użyć sp_helpconstraint procedura składowana, aby wyświetlić listę ograniczeń utworzonych w tabeli:

EXEC Sp_helpconstraint 'SalesDetails'

Wyjście

klucze_ograniczeń kolumna pokazuje domyślną definicję ograniczenia.

Zrzucanie ograniczenia

Ograniczenie możemy usunąć na kilka sposobów. Możemy to zrobić za pomocą dowolnej z następujących metod:

  • Oświadczenie ALTER TABLE DROP CONSTRAINT.
  • Oświadczenie DROP DEFAULT.

Upuść wiązanie za pomocą polecenia ALTER TABLE DROP CONSTRAINT

Aby usunąć ograniczenie, możemy użyć ZMIANY OGRANICZENIA UPUSZCZANIA TABELI Komenda. Składnia jest następująca:

Alter table [tbl_name] drop constraint [constraint_name]

W składni

  • nazwa_tabeli: określ nazwę tabeli, która ma kolumnę z domyślnym ograniczeniem.
  • nazwa_ograniczenia: określ nazwę ograniczenia, które chcesz usunąć.

Załóżmy, że chcemy usunąć DF_SalesDetails_SaleQty ograniczenie z Szczegóły sprzedaży stół. Uruchom zapytanie:

ALTER TABLE dbo.salesdetails 
  DROP CONSTRAINT [DF_SalesDetails_SaleQty] 

Wykonaj poniższe zapytanie, aby sprawdzić, czy ograniczenie zostało usunięte:

SELECT NAME                  [Constraint name], 
       Object_name(parent_object_id)[Table Name], 
       type_desc             [Consrtaint Type], 
       definition            [Constraint Definition] 
FROM   sys.default_constraints

Wyjście

Ograniczenie zostało usunięte.

Usuń ograniczenie DEFAULT za pomocą instrukcji DROP DEFAULT

Teraz zrozumiemy, jak możemy usunąć domyślne ograniczenie za pomocą DROP DEFAULT oświadczenie. Składnia DROP DEFAULT oświadczenie brzmi następująco:

DROP DEFAULT [constraint_name]
  • nazwa_ograniczenia: określ nazwę ograniczenia, które chcesz usunąć.

Aby usunąć ograniczenie za pomocą DROP DEFAULT oświadczenie, uruchom następujące zapytanie:

IF EXISTS (SELECT NAME 
           FROM   sys.objects 
           WHERE  NAME = 'DF_SalesDetails_ProductName' 
                  AND type = 'D') 
DROP DEFAULT [DF_SalesDetails_ProductName]; 

Podsumowanie

W ten sposób przeanalizowaliśmy kilka istotnych aspektów pracy z domyślnymi ograniczeniami. Nauczyliśmy się tworzyć domyślne ograniczenie podczas tworzenia nowej tabeli lub dodać domyślne ograniczenie do istniejącej kolumny tabeli.

Zbadaliśmy również przypadki modyfikowania domyślnej definicji ograniczenia, przeglądania szczegółów domyślnych ograniczeń przy użyciu różnych środków i usuwania domyślnego ograniczenia.

Mamy nadzieję, że te informacje i praktyczne przykłady, które przeanalizowaliśmy, będą pomocne w Twojej pracy.

Czytaj także

SQL INSERT INTO SELECT:5 łatwych sposobów obsługi duplikatów


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL Server 2016:wpływ na wydajność zawsze szyfrowanego

  2. Klauzula VALUES w SQL Server

  3. Uzyskiwanie ostrzeżenia:wartość Null jest eliminowana przez agregację lub inną operację SET

  4. Jak wyświetlić strukturę tabeli w zapytaniu SQL Server?

  5. SQL Server Query - mnożenie grupowe