1. 程式人生 > >資料庫觸發器(建表-建立觸發器)

資料庫觸發器(建表-建立觸發器)

if exists (select *from sysdatabases where name='TRI_school')  
drop database TRI_school  
create database TRI_school  
on primary  
(  
  name='TRI_schoolDB',  
  filename='D:\觸發器\TRI_school.mdf',  
  size=10mb,  
  maxsize=100mb,  
  filegrowth=2mb  
)  




use TRI_school
if exists (select *from sysobjects where name='Student')--學生表  
drop table Student  
create table Student(  
  sno char(10)not null,  
  sname varchar(20)not null,  
  sage smallint,  
  ssex char(1),  
  sdept char(2),  
  xf int default 0,
  jgxf int default 0,
  primary key(sno),  
  check(ssex in ('M','F'))  
) 


if exists (select *from sysobjects where name='Course')--課程表  
drop table Course  
create table Course  
(  
  cno char(10)not null primary key,--定義主鍵  
  cname varchar(20)not null,  
  cpon char(10),  
  credit smallint,  
);  


if exists (select *from sysobjects where name='SC')--選課表  
drop table SC  
create table SC  
(  
sno char(10)not null,  
cno char(10)not null,  
grade smallint ,  
primary key(sno,cno),   
check(grade>=0 and grade<=100)  
)  


create trigger sc_tri on sc
for update,insert,delete
as 
begin
  declare @ycno varchar(10),@ysno varchar(10)
  declare @xcno varchar(10),@xsno varchar(10)
  declare @yxf int ,@xxf int

  select @ycno=cno,@ysno=sno from deleted
  select @xcno=cno,@xsno=sno from inserted
     

   if @xsno is not null--如果現在的學號存在則去學生表中查詢學分是多少
   begin 
   select @xxf=xf from student where 
[email protected]
if @xxf is null--學生表中若沒有學分則置0 update student set xf=0 where [email protected] end if @ysno is not null--//如果原來這個學生就在學生表裡 begin select @yxf=credit from course where [email protected]查詢原學分 update student set [email protected] where [email protected]
為什麼要刪除? end if @xsno is not null begin select @xxf=credit from course where [email protected] update student set [email protected] where sno [email protected] end end --插入操作 insert into student (sno,sname,sage,ssex,sdept) values('95001','李勇',20,'M','CS'); insert into student (sno,sname,sage,ssex,sdept) values('95002','劉晨',19,'F','IS'); insert into student (sno,sname,sage,ssex,sdept) values('95003','王敏',18,'F','MA'); insert into student (sno,sname,sage,ssex,sdept) values('95004','張立',19,'M','IS'); insert into course(cno,cname,cpon,credit) values('2','數學',null,2) insert into course(cno,cname,cpon,credit) values('6','資料處理',null,2) insert into course(cno,cname,cpon,credit) values('7','PASCAL語言','6',4) insert into course(cno,cname,cpon,credit) values('4','作業系統','6',3) insert into course(cno,cname,cpon,credit) values('5','資料結構','7',4) insert into course(cno,cname,cpon,credit) values('1','資料庫','5',4) insert into course(cno,cname,cpon,credit) values('3','資訊系統','1',4) insert into sc values('95001','1',92); insert into sc values('95001','2',85); insert into sc values('95001','3',88); insert into sc values('95002','2',90); insert into sc values('95002','3',80); insert into sc values('95003','3',80); select *from student select *from course select *from sc

相關推薦

資料庫觸發器-建立觸發器

if exists (select *from sysdatabases where name='TRI_school') drop database TRI_school create database TRI_school on primary (

SQLServer的設計

als 寫上 所有 creat fff 沒有 圖形化 money image 知識部分1、SQLServer數據類型·數據類型是數據的一種屬性,用來定義數據是時間、數字、字符串(文字、字母)等·SQLServer提供系統數據類型集,該類型集定義了可以與SQLServer一起

4-20 mysql 整理 語句和mysql命令

AC comment 如果 進入 username -s ID alter ase create table [if not exists] 表名( 字段1 數據類型 [約束或索引列表], 字段2 數據類型 [約束或索引列表]) [表選項列表];#虛擬表的概

SQL Server的設計

知識部分1、SQLServer資料型別·資料型別是資料的一種屬性,用來定義資料是時間、數字、字串(文字、字母)等·SQLServer提供系統資料型別集,該型別集定義了可以與SQLServer一起使用的所有資料型別·常用的資料型別:int:從-2147483648到-2147483647之間的整數(可用於識別符

JavaFX程式初次執行建立資料庫並執行SQL

  在我的第一個JavaFX程式完成安裝的時候才突然發現,不能要用這個軟體還要手動執行Sql來建表吧?  於是我的想法是在Main程式中執行時檢測資料庫連線狀況,如果沒有檢測到資料庫或者連線異常,那麼出現錯誤提示,如果資料庫連線沒有問題那麼自動建立資料庫並執行建表Sql進行初始化。 pac

psql按月分觸發器自動

@[Anna_1314]@ 1、建立主表 通過主表定義好表的結構,需要一個分表的關鍵字,比如下面的date_key,分表的時候會根據這個欄位所在的表的範圍決定插入到哪張分割槽表中。 drop table

java程式設計師第十六課 -MySQL資料庫的查詢

課程回顧:MySQL資料庫和SQL語言 資料庫的概述 1.資料庫的作用:倉庫,儲存資料。 2.關係型的資料庫,儲存實體與實體之間的關係。 3.常見的資料庫 * Oracle MySQL SQLServer DB2 MySQL資料庫的安裝和解

使用SQLAlchemy ORM進行一些基礎的操作,插入,查詢,刪除

引入sqlalchemy包 from sqlalchemy import Table,Column, String, create_engine,MetaData,textfrom sqlalchem

ABAP 使用嚮導建立TABLE CONTROL TC 控制元件

使用嚮導建立TC,主要有以下步驟, 1.定義你要在TC上顯示的列為一個數據結構,並用該結構定義內表和工作區。在建立TC前一定要啟用程式,這樣TC才能獲得定義的內表和工作區。 2.建立螢幕,轉到格式佈局

使用Navicat為數據庫建立觸發器

界面 jpg con per ext 數據庫表 定義 get 技術分享 打開Navicat 打開數據表所在的數據庫,右擊需要新增字段的數據庫表,然後點擊【設計表】 此時進入表設計界面 點擊【觸發器】標簽頁,輸入觸

nyist oj 138 找球號(二hash +位運算

pan char s geo 運算 arch font msu 哈希 next 找球號(二) 時間限制:1000 ms | 內存限制:65535 KB 難度:5 描寫敘述 在某一國度裏流行著一種遊戲。遊戲規則為:現有一堆球中。每一個球上都有一個整數編號i

51nod 1082 與7無關的數 預處理

dao 空間 put ini spa 取消 memset blog ref 1082 與7無關的數 題目來源: 有道難題 基準時間限制:1 秒 空間限制:131072 KB 分值: 5 難度:1級算法題 收藏 關註 取消關註 一個正整數,如果它能被7整除,或

51nod 1062 序列中最大的數預處理

題目 with tdi .aspx input get 例如 ace mark 1062 序列中最大的數 題目來源: Ural 1079 基準時間限制:1 秒 空間限制:131072 KB 分值: 10 難度:2級算法題 收藏 關註 取消關註 有這

jquery.form.jsajax單提交

jquer 我們 使用 執行 sub 某個字段 httpd 區別 load Form插件地址: 官方網站:http://malsup.com/jQuery/form/ 翻譯地址:http://www.aqee.net/docs/jquery.form.plugin/jque

第八屆省賽 B:Quadrat 找規律

bsp UC amp ext log test case sequence pan cto Description It is well-known that for any n there are exactly four n-digit numbers (inclu

劍指offer題目系列三相關題目

eight 信息 賦值 n) 內容 指針 alt 延續 合並兩個排序的鏈表 本篇延續上一篇劍指offer題目系列二,介紹《劍指offer》第二版中的四個題目:O(1)時間內刪除鏈表結點、鏈表中倒數第k個結點、反轉鏈表、合並兩個排序的鏈表。同樣,這些題目並非嚴

【題解】 bzoj3956: Count ST+單調棧

n) uri 方案 自己 ace 貢獻 int n+1 思路 題面 Solution 看了一點點題解,自己又剛了\(2h30min\),剛了出來qwq,我好菜啊qwq 貌似這道題是BZOJ 4826的弱化,弱化都不會qwq涼涼 Solution 首先你可以考慮,找出\([

python中前後端通訊方法Ajax和ORM對映form單提交

後端從資料庫獲取資料給到前端: 第一種方式: admin.py檔案程式碼: @admin.route('/showList') def show(): # 獲取資料庫所有文章資料,得到一個個物件 res=Article.query.all() dicts=[]

【牛客 - 125A】灰魔法師,暴力

題幹: 給出長度為n的序列a, 求有多少對數對 (i, j) (1 <= i < j <= n) 滿足 ai + aj 為完全平方數。 輸入描述: 第一行一個整數 n (1 <= n <= 105) 第二行 n 個整數 ai (1 <= ai &l

單鏈 簡單題單鏈基本操作

題目描述: 有一個帶頭結點的單鏈表L=(a1,b1,a2,b2,......an,bn),設計一個演算法將其拆分成兩個帶頭結點的單鏈表L1和L2,其中L1=(a1,a2,a3...an),L2=(b1,b2,b3....bn),要求L1使用L的頭結點。 解題思路: 利用原單鏈表L中的所有