CONSULTA SOBRE REGLA

07/03/2005 - 18:40 por jaime | Informe spam
hola, he generado una regla, en la que indico lo siguiente:
len(ltrim(@Des))>0
para una gran cantidad de campos en disitntas tablas, esta se llama
validacampos
como puedo hacer para modificar la regla a
len(ltrim(@Des))>=0
pero cuando le doy aplicar, me dice que esta enlazado a varios campos, como
la puedo modificar sin eliminar todas
las tablas de la base de datos, ya que estas estan funcionando en un
aplicativo actualmente

Preguntas similare

Leer las respuestas

#1 Alejandro Mesa
07/03/2005 - 19:37 | Informe spam
Jaime,

No se puede borrar la regla mientras ella este atada a una columna. El
proceso seria desatarla de todas las columnas usando el procedimiento
sp_unbindrule, borrarla, crearla nuevamente y despues volverla a atar usando
el procedimiento sp_bindrule


Ejemplo:

use northwind
go

create rule mayor_igual_a_cadena_vacia as @value > ''
go

create table t1 (colA varchar(25) null)
go

create table t2 (colA varchar(25) null)
go

exec sp_bindrule mayor_igual_a_cadena_vacia, '[t1].colA'
exec sp_bindrule mayor_igual_a_cadena_vacia, '[t2].colA'
print ''
go

declare @sql nvarchar(4000)
declare @tn sysname
declare @cn sysname
declare @rn sysname

set @rn = N'mayor_igual_a_cadena_vacia'

declare my_cursor cursor local static scroll read_only
for
select
object_name(c.[id]) as table_name,
c.[name] as column_name
from
syscolumns c, syscomments m
where
m.[id] = c.domain
and objectproperty(c.domain, 'IsRule') = 1
and object_name(c.domain) = @rn
order by
c.[id]

open my_cursor

while 1 = 1
begin
fetch next from my_cursor into @tn, @cn

if @@error != 0 or @@fetch_status != 0 break

set @sql = N'sp_unbindrule ''' + quotename(@tn) + '.' + quotename(@cn) + ''''
print @sql
execute sp_executesql @sql
end

print ''

drop rule mayor_igual_a_cadena_vacia

exec ('create rule mayor_igual_a_cadena_vacia as @value >= ''''')

fetch first from my_cursor into @tn, @cn

while @@fetch_status = 0
begin
set @sql = N'sp_bindrule mayor_igual_a_cadena_vacia, ''' + quotename(@tn) +
'.' + quotename(@cn) + ''''
print @sql
execute sp_executesql @sql

fetch next from my_cursor into @tn, @cn
end

close my_cursor
deallocate my_cursor
go

exec sp_helpconstraint t1
exec sp_helpconstraint t2
drop table t1, t2
go

drop rule mayor_igual_a_cadena_vacia
go


AMB

"jaime" wrote:

hola, he generado una regla, en la que indico lo siguiente:
len(ltrim(@Des))>0
para una gran cantidad de campos en disitntas tablas, esta se llama
validacampos
como puedo hacer para modificar la regla a
len(ltrim(@Des))>=0
pero cuando le doy aplicar, me dice que esta enlazado a varios campos, como
la puedo modificar sin eliminar todas
las tablas de la base de datos, ya que estas estan funcionando en un
aplicativo actualmente



email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida