MSSQL Server
2 отговора
268 прегледа
MSSQL Server
Налага ми се в скрипт да махна constraint, чието име не е известно. Известни са само таблицата и колоната.
declare @ConstraintName varchar (256)
select
@ConstraintName = c.name
from sysobjects c, sysusers u, sysobjects t, syscolumns col
where
c.xtype in ('C', 'F', 'PK', 'UQ', 'D') and
col.name = 'MyColumn' and
t.name = 'MyTable' and
u.uid = c.uid and
c.parent_obj = t.id and
c.info = col.colid and
t.id = col.id
Dо тук добре, но в DROP CONSTRAINT не мога да ползвам променливи (или поне правя някаква грешка в ALTER TABLE [Owner].[MyTable] DROP CONSTRAINT @ConstraintName)
Някой може ли да ми даде идея?
Наздраве
declare @ConstraintName varchar (256)
select
@ConstraintName = c.name
from sysobjects c, sysusers u, sysobjects t, syscolumns col
where
c.xtype in ('C', 'F', 'PK', 'UQ', 'D') and
col.name = 'MyColumn' and
t.name = 'MyTable' and
u.uid = c.uid and
c.parent_obj = t.id and
c.info = col.colid and
t.id = col.id
Dо тук добре, но в DROP CONSTRAINT не мога да ползвам променливи (или поне правя някаква грешка в ALTER TABLE [Owner].[MyTable] DROP CONSTRAINT @ConstraintName)
Някой може ли да ми даде идея?
Наздраве
Re: MSSQL Server
Пробвай със execute - сглобяваш си един стринг и след това го изпълняваш.
нещо от типа
declare @myString nvarchar(1000)
set @myString = 'ALTER TABLE [Owner].[MyTable] DROP CONSTRAINT '+@ConstraintName+'') '
exec (@myString)
Огледай хелпа на EXECUTE за повече подробности
нещо от типа
declare @myString nvarchar(1000)
set @myString = 'ALTER TABLE [Owner].[MyTable] DROP CONSTRAINT '+@ConstraintName+'') '
exec (@myString)
Огледай хелпа на EXECUTE за повече подробности