Πρέπει να προσθέσω μια συγκεκριμένη στήλη αν δεν υπάρχει. Έχω κάτι σαν το ακόλουθο, αλλά πάντα επιστρέφει false:
IF EXISTS(SELECT *
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'myTableName'
AND COLUMN_NAME = 'myColumnName')
Πώς μπορώ να ελέγξω αν μια στήλη υπάρχει σε έναν πίνακα της βάσης δεδομένων του SQL Server;
Προσαρμόστε τα παρακάτω για να ταιριάζουν στις δικές σας απαιτήσεις:
if not exists (select
column_name
from
INFORMATION_SCHEMA.columns
where
table_name = 'MyTable'
and column_name = 'MyColumn')
alter table MyTable add MyColumn int
Επεξεργασία για την αντιμετώπιση της επεξεργασίας της ερώτησης: Αυτό θα πρέπει να δουλέψει - ρίξτε μια προσεκτική ματιά στον κώδικά σας για ηλίθια λάθη. ρωτάτε για παράδειγμα INFORMATION_SCHEMA στην ίδια βάση δεδομένων στην οποία εφαρμόζεται η εισαγωγή σας; Μήπως έχετε κάποιο τυπογραφικό λάθος στο όνομα του πίνακα/στήλης σας σε κάποια από τις δύο δηλώσεις;
Δοκιμάστε αυτό...
IF NOT EXISTS(
SELECT TOP 1 1
FROM INFORMATION_SCHEMA.COLUMNS
WHERE
[TABLE_NAME] = 'Employees'
AND [COLUMN_NAME] = 'EmployeeID')
BEGIN
ALTER TABLE [Employees]
ADD [EmployeeID] INT NULL
END
Πρώτα ελέγξτε αν ο συνδυασμός table
/column
(id
/name
) υπάρχει στο dbo.syscolumns
(ένας εσωτερικός πίνακας του SQL Server που περιέχει ορισμούς πεδίων), και αν όχι, εκδώστε το κατάλληλο ερώτημα ALTER TABLE
για να τον προσθέσετε. Για παράδειγμα:
IF NOT EXISTS ( SELECT *
FROM syscolumns
WHERE id = OBJECT_ID('Client')
AND name = 'Name' )
ALTER TABLE Client
ADD Name VARCHAR(64) NULL