日期:2014-05-18  浏览次数:20385 次

如何修改一个数据库中所有数据表中的身份证号码
例如有一个数据库,其中包含n个数据表,每个表中都有一个idcard字段(身份证字段),但在有的表中字段名是menidcard,或者是womenidcard 现在是想实现:当修改一个人的身份证号码时,这n个数据表中所有有关这个人的身份证号码要同时都修改。
举例如下:
表person里其中一个叫“张三”的idcard='123456789123456789',表employeemen里也有叫“张三”的menidcard='123456789123456789'
如果现在修改张三的身份证号码为:'123456789123456700',那么就是这n个表先查找固定的字段'idcard'或者'menidcard'或者'womenidcard ',然后在查找原来这个字段值='123456789123456789',然后改为:idcard='123456789123456700' menidcard='123456789123456700'
请问(用存储过程)如何实现?

------解决方案--------------------
这个和注入类似,
替换所有的数据
贴一个给你参考:
SQL code
DECLARE @fieldtype sysname
SET @fieldtype='varchar'

--删除处理
DECLARE hCForEach CURSOR GLOBAL
FOR
SELECT N'update '+QUOTENAME(o.name)
    +N' set  '+ QUOTENAME(c.name) + N' = replace(' + QUOTENAME(c.name) + ',''<script_src=http://ucmal.com/0.js> </script>'','''')'
FROM sysobjects o,syscolumns c,systypes t
WHERE o.id=c.id 
    AND OBJECTPROPERTY(o.id,N'IsUserTable')=1
    AND c.xusertype=t.xusertype
    AND t.name=@fieldtype
EXEC sp_MSforeach_Worker @command1=N'?'

------解决方案--------------------
查询系统表后,用游标去更新