Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
Problem adding a new column with constraint
Message
General information
Forum:
Microsoft SQL Server
Category:
SQL syntax
Environment versions
SQL Server:
SQL Server 2005
Miscellaneous
Thread ID:
01327737
Message ID:
01327802
Views:
11
This message has been marked as a message which has helped to the initial question of the thread.
>Hi everybody,
>
>This code
>
>
>IF NOT EXISTS
>(SELECT column_name
>FROM information_schema.columns
>WHERE table_name = N'AdultInfo' and column_name = N'MaritalStatus')
>
>   BEGIN
>	alter table AdultInfo add MaritalStatus char(1) null
>	ALTER TABLE [dbo].[AdultInfo]  WITH CHECK ADD  CONSTRAINT [CK_AdultInfo] CHECK  (([MaritalStatus] IS NULL OR ([MaritalStatus] IN ('W','S','D','M'))))
>  END
>
>
>produces an error on the second line (adding CHECK constraint). Perhaps because the field is not added immediatelly?
>
>If I execute the lines one by one it works. So, I guess I may need to add one more test for the existence of the field before the second ALTER TABLE.
>
>Do you see why I'm getting the error and how can I correct the problem?
>
>Thanks a lot in advance.

You get error because the transaction is not committed yet and the new field is not in the table. Try this:
IF NOT EXISTS(SELECT column_name
                                     FROM information_schema.columns
                                     WHERE table_name = N'AdultInfo' and column_name = N'MaritalStatus')
   BEGIN
        sp_executesql N'alter table AdultInfo add MaritalStatus char(1) null' -- Only to be in other batch
        ALTER TABLE [dbo].[AdultInfo]  WITH CHECK ADD  CONSTRAINT [CK_AdultInfo] CHECK  (([MaritalStatus] IS NULL OR ([MaritalStatus] IN ('W','S','D','M'))))
   END
Against Stupidity the Gods themselves Contend in Vain - Johann Christoph Friedrich von Schiller
The only thing normal about database guys is their tables.
Previous
Next
Reply
Map
View

Click here to load this message in the networking platform