Πώς να ελέγξετε αν υπάρχει NOT NULL περιορισμούς

ψήφοι
2

Είμαι τροποποίηση ενός πίνακα του SQL μέσω C # κώδικα και θα πρέπει να ρίξει μια NOT NULL περιορισμό, αν υπάρχει. Πώς μπορώ να ελέγξω να δω αν υπάρχει πρώτα;

Δημοσιεύθηκε 09/12/2008 στις 16:31
πηγή χρήστη
Σε άλλες γλώσσες...                            


5 απαντήσεις

ψήφοι
14

select is_nullable 
from   sys.columns
where  object_id = OBJECT_ID('tablename')  
and    name = 'columnname';
Απαντήθηκε 09/12/2008 στις 16:37
πηγή χρήστη

ψήφοι
1

εκτελέσει αυτή την δήλωση SQL:

select * from information_schema.columns c
inner join information_schema.tables t on c.table_catalog = t.table_catalog and t.table_schema = c.table_schema and t.table_name = c.table_name
where c.table_name = 'Categories' and c.Is_nullable = 'NO'

και στη συνέχεια να εκτελέσει τη δήλωση ALTER που αφαιρεί το «όχι μηδενική» περιορισμού

Απαντήθηκε 09/12/2008 στις 16:40
πηγή χρήστη

ψήφοι
1

Λοιπόν, μπορείτε να ελέγξετε syscolumns.isnullableτη σημαία; Ή πιο πρόσφατα:

COLUMNPROPERTY(@tableId, 'ColumnName', 'AllowsNull')

Πού @tableId είναι object_id ( 'TableName')

Απαντήθηκε 09/12/2008 στις 16:37
πηγή χρήστη

ψήφοι
0

μπορείτε με τη χρήση του COLUMNPROPERTY :

SELECT COLUMNPROPERTY (object_id ( 'schemaName.TableName'), 'ColumnName', 'AllowsNull')

Απαντήθηκε 09/12/2008 στις 16:40
πηγή χρήστη

ψήφοι
0

Δεν είμαι σίγουρος σχετικά με τους κανόνες της επιχείρησής σας, έτσι θα μπορούσα να κάνω λάθος, αλλά αυτό που προτείνετε ακούγεται σαν μια κακή ιδέα.

Αν το NOT NULL περιορισμός δεν πρέπει να υπάρχει, στη συνέχεια, αφαιρέστε το από την DB. Αν πρέπει να υπάρχει, το πρόγραμμα γύρω από αυτό.

Αν πραγματικά χρειάζεται να εφαρμόσουν DDL να αλλάξει τους πίνακες, θα ήθελα να γράψω μια αποθηκευμένη διαδικασία να κάνουν και να καλέσετε την αποθηκευμένη διαδικασία από την C #.

Απαντήθηκε 09/12/2008 στις 16:35
πηγή χρήστη

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more