判断表中的数据是否被其他表中使用过!!
来源:互联网 发布:linux改文件名命令 编辑:程序博客网 时间:2024/06/02 05:19
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
CREATEPROCEDUREdbo.SystemFuntion_HasBeUsed
@PTableNameVarchar(100), --要检查数据是否被使用的主键表名称
@PKValueINT, --主键字段的值
@IsUsed INTOUTPUT
AS
DECLARE@TableNameVARCHAR(100) --外键表的名称
DECLARE@FKNameVARCHAR(100) --外键字段名称
DECLARE@FKeyINT
DECLARE@SQLVARCHAR(8000)
SET@sql='SELECT0ascolCountinto#tempTableColUNION'
DECLAREcursorFKTable CURSORFOR
SELECTb.[name]ASTableName,a.fkey
FROMsysforeignkeysaINNERJOINsysobjectsbona.fkeyid=b.[id]INNERJOINsysobjectscona.rkeyid=c.[id]
WHEREc.[name]=@PTableName
OPENcursorFKTable
FETCHNEXTFROMcursorFKTableINTO@TableName,@FKey
WHILE@@FETCH_STATUS=0
BEGIN
SELECT@FKName=a.[name]FROMsyscolumnsaINNERjoinsysobjectsbONa.[id]=b.[id]WHERE b.[name]=@TableNameand@FKey=a.colid
SET@sql=@sql+'SELECT CASEWHENCOUNT(*)=0THEN0ELSE1ENDFROM'+@TableName+'WHERE'+@FKName+'='+CAST(@PKValueASVARCHAR(100))
SET@sql=@sql+'UNION '
FETCHNEXTFROMcursorFKTableINTO@TableName,@FKey
END
CLOSEcursorFKTable
DEALLOCATEcursorFKTable
SELECT@sql=left(@sql,len(@sql)-6)
exec(@sql)
SELECT@IsUsed=@@ROWCOUNT-1
GO
使用方法:
/***********获取当前主键值是否被其他表使用过(@HasPKValueBeUsedasHasPKValueBeUsed)*************/
DECLARE@HasPKValueBeUsedINT
EXECUTESystemFuntion_HasBeUsed'TLSubjectPlan',@SubjectPlanID,@IsUsed=@HasPKValueBeUsedOUTPUT
/*******************************************************************************/
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
CREATEPROCEDUREdbo.SystemFuntion_HasBeUsed
@PTableNameVarchar(100), --要检查数据是否被使用的主键表名称
@PKValueINT, --主键字段的值
@IsUsed INTOUTPUT
AS
DECLARE@TableNameVARCHAR(100) --外键表的名称
DECLARE@FKNameVARCHAR(100) --外键字段名称
DECLARE@FKeyINT
DECLARE@SQLVARCHAR(8000)
SET@sql='SELECT0ascolCountinto#tempTableColUNION'
DECLAREcursorFKTable CURSORFOR
SELECTb.[name]ASTableName,a.fkey
FROMsysforeignkeysaINNERJOINsysobjectsbona.fkeyid=b.[id]INNERJOINsysobjectscona.rkeyid=c.[id]
WHEREc.[name]=@PTableName
OPENcursorFKTable
FETCHNEXTFROMcursorFKTableINTO@TableName,@FKey
WHILE@@FETCH_STATUS=0
BEGIN
SELECT@FKName=a.[name]FROMsyscolumnsaINNERjoinsysobjectsbONa.[id]=b.[id]WHERE b.[name]=@TableNameand@FKey=a.colid
SET@sql=@sql+'SELECT CASEWHENCOUNT(*)=0THEN0ELSE1ENDFROM'+@TableName+'WHERE'+@FKName+'='+CAST(@PKValueASVARCHAR(100))
SET@sql=@sql+'UNION '
FETCHNEXTFROMcursorFKTableINTO@TableName,@FKey
END
CLOSEcursorFKTable
DEALLOCATEcursorFKTable
SELECT@sql=left(@sql,len(@sql)-6)
exec(@sql)
SELECT@IsUsed=@@ROWCOUNT-1
GO
使用方法:
/***********获取当前主键值是否被其他表使用过(@HasPKValueBeUsedasHasPKValueBeUsed)*************/
DECLARE@HasPKValueBeUsedINT
EXECUTESystemFuntion_HasBeUsed'TLSubjectPlan',@SubjectPlanID,@IsUsed=@HasPKValueBeUsedOUTPUT
/*******************************************************************************/
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 728x15, 创建于 08-4-23MSDN */google_ad_slot = "3624277373";google_ad_width = 728;google_ad_height = 15;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
<script type="text/javascript"><!--google_ad_client = "pub-2947489232296736";/* 160x600, 创建于 08-4-23MSDN */google_ad_slot = "4367022601";google_ad_width = 160;google_ad_height = 600;//--></script><script type="text/javascript"src="http://pagead2.googlesyndication.com/pagead/show_ads.js"></script>
- 判断表中的数据是否被其他表中使用过!!
- 判断表中的数据是否被其他表中使用过!!
- 数据库删除数据时判断数据是否被其他数据表使用1
- excel中判断一个表中的某一列的数据在另一列中是否存在
- 判断ie浏览器版本是否过低,然后提示更新或者使用其他浏览器
- excel中判断一个表中的某一列的数据在另一个表中的某一列中是否存在
- VC中判断指定窗口是否被其他窗口遮挡
- sql语句 判断表数据是否存在另一个表中
- Mysql中判断表中的某一个字段是否存在
- 使用js,判断数组中是否有重复数据
- 判断一个表单是否被修改过
- 判断jtable是否被编辑过
- js 判断按钮是否被点击过
- 判断变量是否被声明过
- oracle判断表中的字段是否存在,表在数据库中是否存在
- 大表格,多Form元素的提交 判断表单数据是否有被修改过
- javascript 判断某页面上的数据是否改变过
- javascript 判断某页面上的数据是否改变过
- 删除的所有存储过程、主键、外键、索引等
- 在关系型中的应用
- 变得迷茫
- 让JDBC查询日志变得简单
- 收集并存储性能监控器数据到表
- 判断表中的数据是否被其他表中使用过!!
- 中英文字符混合处理方法
- 将表中的数据生成Insert脚本的存储过程!!!
- Linux各种文件系统比较
- 怎样解决:“Couldnotcreatecomponentcategoriesmanager”和“Couldnotcreateaninsta..
- 关于sharedpool的深入探讨(二)
- 我的linux经常死机,请问是甚么问题导致的
- 用实体关系图进行建模
- 什么是联机分析处理(OLAP)