SQL 2008 怎么实现删除学生表里面的一条记录,成绩表里面关于这个学生的记录也同时删掉,谢求具体代码
作者&投稿:睢石 (若有异议请与网页底部的电邮联系)
create or replace trigger tr1
before delete on XSB
for each row
begin
delete from CJB where CJB.xh=:old.xh;
end;
/
delete from sc where 主键 = ( select 对应主表字段 form strudent where 主键=那条记录id);
-- 按照注释一步步执行 看效果
--创建表
IF OBJECT_ID('tstudent') > 0
DROP TABLE tstudent
GO
CREATE TABLE tstudent
(
fstudentno VARCHAR(10) PRIMARY KEY ,
fname NVARCHAR(10),
)
IF OBJECT_ID('tScore') > 0
DROP TABLE tScore
CREATE TABLE tScore
(
fstudentno VARCHAR(10) PRIMARY KEY ,
fscroe INT
)
GO
--插入测试数据
INSERT dbo.tstudent
( fstudentno, fname )
VALUES ( '001', -- fstudentno - varchar(10)
N'小张' -- fname - nvarchar(10)
)
INSERT dbo.tScore
( fstudentno, fscroe )
VALUES ( '001', -- fstudentno - varchar(10)
90 -- fscroe - int
)
--查看插入效果
SELECT *
FROM dbo.tScore
SELECT *
FROM dbo.tstudent
--创建触发器
if (object_id('tgr_DeleteByStudentNo', 'tr') is not null)
drop trigger tgr_DeleteByStudentNo
Go
--创建一个删除的触发器
CREATE trigger tgr_DeleteByStudentNo ON tstudent
AFTER DELETE
as
DECLARE @strStudentNo VARCHAR(10)
SELECT @strStudentNo = fstudentno FROM deleted
DELETE FROM tScore WHERE fstudentno = @strStudentNo
DELETE FROM tstudent WHERE fstudentno = '001'
--查看删除效果
SELECT *
FROM dbo.tScore
SELECT *
FROM dbo.tstudent
你可以研究一下 触发器,在学生表下加一个触发器就ok了。
啜都远策: -- 按照注释一步步执行 看效果 --创建表 IF OBJECT_ID('tstudent') > 0DROP TABLE tstudent GO CREATE TABLE tstudent(fstudentno VARCHAR(10) PRIMARY KEY ,fname NVARCHAR(10),)IF OBJECT_ID('tScore') > 0DROP TABLE ...
泰安市15225383910: 用SQL怎么写"删除学生成绩表中不及格的学生." - ?
啜都远策: delete from 表名 where 成绩 < 60
泰安市15225383910: 使用SQL删除所有女同学的记录 - ?
啜都远策: 删除所有女同学记录1、假设 学生表为:students2、假设 性别字段为:sex SQL语句示例为:1 deletestudents wheresex='女'
泰安市15225383910: SQL中如何用一条语句删除一个学生(学生编号为040101)的信息以及选课信息?命令代码是什么? - ?
啜都远策: 假如你的 外键关系, 是DELETE CASCADE 方式 的,那么, 删除 主表的数据的时候, 数据库 会自动 删除掉 子表里面的数据不需...
泰安市15225383910: 如何删除一个数据库中某个学生的全部记录 - ?
啜都远策: 例如你有一个学生表student 你要删除表格里面的一个叫刘慧同学的信息 你就应该敲 delete * from student where name = '刘慧'(方法:delete from <数据表> where 学号='学生的学号')
泰安市15225383910: 用sql语句删除表中出生月份在5到8月的学生 - ?
啜都远策: detete from studentwhere birthday>=5and birthday<=8或者 用between and 但是主要要转换 birthday 格式
泰安市15225383910: SQL中,定义一个游标,删除学生表中第一行数据,怎样写 - ?
啜都远策: declare @sex int declare @grade int declare my_youbiao cursor for select sex ,grade from StudentTable open my_youbiao fetch next from my_youbiao into @sex, @grade while @@fetch_status=0 begin if @sex='男' begin update StudentTable set ...
泰安市15225383910: sql 中级联删除怎么写代码 ? - ?
啜都远策: 在学生表上做触发器-- Create trigger 触发器名称 On 学生表 for delete as delete from 成绩表 where 学号 in (select 学号 from deleted)-- 当学生表进行删除时将自动删除成绩表内与之对应的信息
泰安市15225383910: 怎样用SQL语言建立学生数据表,包括对成绩的删除、录入、查询 - ?
啜都远策: --1、 --新建一个数据库XSGL create database XSGL --新建表Student(学生信息) use XSGL go create table Student (Sno char(10) not null, Sname char(8), sex char(2) default'男' not null, birthday datetime, Sdept char(20) ) --创建名为Score(学生...
泰安市15225383910: SQL数据库:用存储过程加事务,实现在借书记录表里有借书记录的学生删掉借书记录同时删掉该学生在学生表的信息?
啜都远策: 用事务处理来执行 在存储过程里面用 BEGIN TRAN--开始事务处理DELETE FROM 借书表 WHERE 学生ID=传递过来的学生ID DELETE FORM 学生表 WHERE 学生ID=传递过来的学生IDIF @@ERROR=0---上面SQL语句执行没有错误COMMIT TRAN--提交整个事务(两个表都会删除)ELSE--否则遇到错误的情况ROLLBACK TRAN--回滚事务,不会删除数据(两个表都不会删除) 以上只是简述如何实现以及事务处理如何使用,具体需要你自己分析需求和写代码.