判断表中的数据是否被其他表中使用过!!

数据

CREATE PROCEDURE dbo.SystemFuntion_HasBeUsed
@PTableName Varchar(100), --要检查数据是否被使用的主键表名称
@PKValue INT,    --主键字段的值
@IsUsed  INT OUTPUT
AS

 DECLARE @TableName VARCHAR(100) --外键表的名称
 DECLARE @FKName VARCHAR(100) --外键字段名称
 DECLARE @FKey INT
 
 DECLARE @SQL VARCHAR(8000)

 SET @sql = 'SELECT 0 as colCount into #tempTableCol UNION '

 DECLARE cursorFKTable  CURSOR FOR
  SELECT b.[name] AS TableName , a.fkey
  FROM sysforeignkeys a INNER JOIN sysobjects b on a.fkeyid=b.[id] INNER JOIN sysobjects c on a.rkeyid=c.[id]
  WHERE c.[name]=@PTableName
  
  OPEN cursorFKTable
  FETCH NEXT FROM cursorFKTable INTO @TableName,@FKey

  WHILE @@FETCH_STATUS = 0
  BEGIN

  SELECT @FKName = a.[name] FROM syscolumns a INNER join sysobjects b ON a.[id]=b.[id] WHERE  b.[name]=@TableName and @FKey=a.colid
  
  SET @sql = @sql + 'SELECT  CASE WHEN COUNT(*)=0 THEN 0 ELSE 1 END FROM ' + @TableName +' WHERE ' + @FKName + '=' + CAST(@PKValue AS VARCHAR(100))
  SET @sql = @sql + ' UNION  ' 

    FETCH NEXT FROM cursorFKTable INTO @TableName,@FKey
 END
    CLOSE cursorFKTable 
    DEALLOCATE cursorFKTable      

SELECT @sql = left(@sql,len(@sql)-6)
exec(@sql)
SELECT @IsUsed = @@ROWCOUNT-1
GO

使用方法:

/***********获取当前主键值是否被其他表使用过(@HasPKValueBeUsed as HasPKValueBeUsed)*************/
 DECLARE @HasPKValueBeUsed INT
 EXECUTE SystemFuntion_HasBeUsed 'TLSubjectPlan',@SubjectPlanID,@IsUsed=@HasPKValueBeUsed OUTPUT
/*******************************************************************************/

时间: 2025-01-24 12:34:16

判断表中的数据是否被其他表中使用过!!的相关文章

mysql-MySQL数据库从表1(table1)中导出数据到(table2)中。会有多列。

问题描述 MySQL数据库从表1(table1)中导出数据到(table2)中.会有多列. table1 字段:id name url table2: 需要获取 table1 中的id url 请问怎样实现? 用sql实现的时候需要注意字段名字和顺序吗? 解决方案 字段名称随便,但是要对应起来,包括类型. create table table2 ( id int primary key, name varchar(20), ) insert into table2(id,name) select

请各位一下.如何将C#中的数据网格表中的数据导到EXCEL表中?

问题描述 请各位一下.如何将C#中的数据网格表中的数据导到EXCEL表中? 解决方案 解决方案二:是GridView导出EXCEL吗?解决方案三:从网上找到的,引用Excel库usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem

怎样把一个datagridview表中的数据存为一个数据库中的一个数据表?

问题描述 如题....在线等..... 解决方案 解决方案二:从它的数据源datatable直接循环构成insert语句即可解决方案三:SqlCommandBuilderSCB=newSqlCommandBuilder(dataAdapter1);dataAdapter1.Update(dgv1.Tables[0]);解决方案四:注意要定义变量dataAdapter1,ds1dgv要绑定ds1.Tables[0]SqlCommandBuilderSCB=newSqlCommandBuilder(

《Oracle SQL疑难解析》——1.6 批量地从一个表中复制数据到另一个表

1.6 批量地从一个表中复制数据到另一个表 Oracle SQL疑难解析 1.6.1 要解决的问题 如何从一个表中一次性复制多行记录到另一个表. 1.6.2 解决方法 INSERT INTO... SELECT... 方法可以插入多行记录,关键是用SELECT语句选择多行记录时一定要用对选择条件.我们把以前的SELECT语句做一点修改,就可以选择多行记录了: 当然,前提是存在HR.CANDIDATES表,在做练习前,应确保你的HR.CANDIDATES表和例子中的表是一致的. 1.6.3 数据库

求C#代码!!关于从Excel表中将数据导入Access数据库,以及Access数据库中的数据导出到Excel表的代码。急!!!晚上就得交差啊

问题描述 我需要从Excel表中将数据导入Access数据库,以及Access数据库中的数据导出到Excel表的代码,越具体越好!!望各位高手能不吝赐教 解决方案 解决方案二:不会吧?难道世间真的是如此残忍?为什么没人理我啊?高手们,算小弟我求你们了!难道是分不够多吗?初出江湖实在是身无分文啊----就不要太在意这个了,好不好啊?给我写写吧,万分感谢了!!解决方案三:这里是利用officeapplication方式来操作excel的http://blog.csdn.net/fangxinggoo

Java中ResultSet数据自动填充到类中&类实例填充PreparedStatement

需求: (1)提取ResultSet中值到一个类中挺麻烦的,需要new一个变量,使用对应成员的Set方法赋值,能不能根据类的Class,直接提取出ResultSet中的数据,最后返回实例化的类? (2)可以用PreparedStatement预编译带变量的sql语句,在execute之前需要将变量值填充进去,一个一个设置太麻烦了,能不能提供一个类变量,使用类成员变量的值自动填充PreparedStatement? 这样的功能许多开源的框架可以实现,但是不想因为这么一点点的需求去学习那么庞大的一套

c#-如何把datagridview中的数据保存到SQL数据库中?VB.NET或C#

问题描述 如何把datagridview中的数据保存到SQL数据库中?VB.NET或C# 如下图:已经实现从EXCEL导入数据到Datagridview中,现在要把其中的数据保存到数据库的AAAie表里面.请用代码说明,谢谢. 解决方案 取数据用ado.net保存到SQL Server数据库.http://blog.csdn.net/lysc_forever/article/details/7697536 解决方案二: 方法1.创建一个数据库,表,表名自取,表的字段和Excel相同,取Excel

如何从sqlite数据库中获取数据并显示在listview中?

问题描述 如何从sqlite数据库中获取数据并显示在listview中? 在登录页面后,我想在listview中把Apple显示成A,Boy显示成B等等,直到F.但是在程序中当我完全登录后,只有登录表成功创建,主菜单还是没有创建. 我想在test database中创建主菜单,然后我想从主菜单表(mainmenu table)中获取数据再显示在listview中. 我使用了下面的代码: if(username.length()>0&&password.length()>0) {

关于从oracle 数据库中导出数据到csv格式文件中

问题描述 关于从oracle 数据库中导出数据到csv格式文件中 最近有个任务是从oracle中导出数据到csv 中的,因为数据库中的数据比较多,大概30万条,请问下,有哪个大神做个这种的,能不能导入这么大的数据 解决方案 将数据从DataGridView中导出成CSV格式文件oracle数据库的表数据导出为csv文件oracle数据库怎么导入csv格式文件呢 解决方案二: 不可以,分批导就行了 解决方案三: 可以使用常用的连接数据库的工具进行导入和导出,导出的时候导出行号,导入的时候建个表,行

从数据库中取得数据,复选框中与之相等则选中

问题描述 从数据库中取得数据,复选框中与之相等则选中 从数据库中取得数据,后台返回的值与前台复选框的值一致则复选框默认被选中(使用aashx处理界面) 解决方案 取到数据后 循环你要更改的 复选框,值相同的 就选中 checked 解决方案二: 用js搞就好了..你的ashx是返回数据源的吧,处理界面是什么东东.. <input type="checkbox" name="ck" value="1" />1 <input typ