GVKun编程网logo

MSSQL 触发器的运用(my sql 触发器)

6

如果您对MSSQL触发器的运用感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于MSSQL触发器的运用的详细内容,我们还将为您解答mysql触发器的相关问题,并且为您提供关于a

如果您对MSSQL 触发器的运用感兴趣,那么本文将是一篇不错的选择,我们将为您详在本文中,您将会了解到关于MSSQL 触发器的运用的详细内容,我们还将为您解答my sql 触发器的相关问题,并且为您提供关于asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过的路---MSSQL 2008 安装过程、C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)、Connect to MSSQL Database using Flask-SQLAlchemy的有价值信息。

本文目录一览:

MSSQL 触发器的运用(my sql 触发器)

MSSQL 触发器的运用(my sql 触发器)

MSSQL 触发器的运用

 

1、触发器。

定义: 何为触发器?在里面也就是对某一个表的一定的操作,触发某种条件,从而执行的一段程序。触发器是一个特殊的存储过程。
常见的触发器有三种:分别应用于 Insert , Update , Delete 事件。(SQL Server 2000 定义了新的触发器,这里不提)

我为什么要使用触发器?比如,这么两个表:

Create Table Student ( -- 学生表
StudentID int primary key, -- 学号
....
)

Create Table BorrowRecord ( -- 学生借书记录表
BorrowRecord int identity (1,1), -- 流水号
StudentID int , -- 学号
BorrowDate datetime, -- 借出时间
ReturnDAte Datetime, -- 归还时间
...
)

用到的功能有:
1. 如果我更改了学生的学号,我希望他的借书记录仍然与这个学生相关 (也就是同时更改借书记录表的学号);
2. 如果该学生已经毕业,我希望删除他的学号的同时,也删除它的借书记录。
等等。

这时候可以用到触发器。对于 1,创建一个 Update 触发器:

Create Trigger truStudent
On Student
for Update
As
if Update(StudentID)
begin

Update BorrowRecord
Set StudentID=i.StudentID
From BorrowRecord br , Deleted d ,Inserted i
Where br.StudentID=d.StudentID

end

理解触发器里面的两个临时的表:Deleted , Inserted 。注意 Deleted 与 Inserted 分别表示触发事件的表 “旧的一条记录” 和 “新的一条记录”。
一个 Update 的过程可以看作为:生成新的记录到 Inserted 表,复制旧的记录到 Deleted 表,然后删除 Student 记录并写入新纪录。

对于 2,创建一个 Delete 触发器
Create trigger trdStudent
On Student
for Delete
As
Delete BorrowRecord
From BorrowRecord br , Delted d
Where br.StudentID=d.StudentID

从这两个例子我们可以看到了触发器的关键:A.2 个临时的表;B. 触发机制。
这里我们只讲解最简单的触发器。复杂的容后说明。
事实上,我不鼓励使用触发器。触发器的初始设计思想,已经被 “级联” 所替代.

字段类型

描述

bit

0 或 1 的整型数字

int

从 - 2^31 (-2,147,483,648) 到 2^31 (2,147,483,647) 的整型数字

smallint

从 - 2^15 (-32,768) 到 2^15 (32,767) 的整型数字

tinyint

从 0 到 255 的整型数字

 

 

decimal

从 - 10^38 到 10^38-1 的定精度与有效位数的数字

numeric

decimal 的同义词

 

 

money

从 - 2^63 (-922,337,203,685,477.5808) 到 2^63-1 (922,337,203,685,477.5807) 的货币数据,最小货币单位千分之十

smallmoney

从 - 214,748.3648 到 214,748.3647 的货币数据,最小货币单位千分之十

 

 

float

从 - 1.79E+308 到 1.79E+308 可变精度的数字

real

从 - 3.04E+38 到 3.04E+38 可变精度的数字

 

 

datetime

从 1753 年 1 月 1 日到 9999 年 12 日 31 的日期和时间数据,最小时间单位为百分之三秒或 3.33 毫秒

smalldatetime

从 1900 年 1 月 1 日到 2079 年 6 月 6 日的日期和时间数据,最小时间单位为分钟

 

 

timestamp

时间戳,一个数据库宽度的唯一数字

uniqueidentifier

全球唯一标识符 GUID

 

 

char

定长非 Unicode 的字符型数据,最大长度为 8000

varchar

变长非 Unicode 的字符型数据,最大长度为 8000

text

变长非 Unicode 的字符型数据,最大长度为 2^31-1 (2G)

 

 

nchar

定长 Unicode 的字符型数据,最大长度为 8000

nvarchar

变长 Unicode 的字符型数据,最大长度为 8000

ntext

变长 Unicode 的字符型数据,最大长度为 2^31-1 (2G)

 

 

binary

定长二进制数据,最大长度为 8000

varbinary

变长二进制数据,最大长度为 8000

image

变长二进制数据,最大长度为 2^31-1 (2G)

asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案

asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案

我正在使用Dapper主要用于调用数据库MSsql 2008 R2中的存储过程.我没有映射到数据库表的类.大多数数据以IEnumerable< Dynamic>结尾.并传输到屏幕上的网格.

我可以使用现成的数据缓冲解决方案吗? (我需要在MVC上使用它).

数据库中的数据本质上是静态的和动态的.我使用存储库模型来访问数据.

解决方法

Dapper不包含任何内置数据缓存功能(虽然它在内部为元编程层使用了广泛的缓存):它本身就是针对ADO.NET的东西 – 但是,你几乎可以使用任何现成的缓存组件,包括HTTP运行时缓存(HttpContext.Current.Cache)或更新的ObjectCache等实现.因为这些只是对象,它应该工作正常.

如果您使用分布式缓存(可能通过app-fabric,redis或memcached),那么您需要将数据序列化.在那种情况下,我强烈建议使用正式的POCO类型进行绑定,而不是动态API.例如,我们在内部使用dapper来填充用protobuf-net标记进行注释以进行序列化的POCO,并通过BookSleeve存储到redis.这听起来比实际更复杂.

BI学习走过的路---MSSQL 2008 安装过程

BI学习走过的路---MSSQL 2008 安装过程

学习BI,开始的路程十分坎坷啊。

我学习的是针对MS sql Server的BI开发

刚熟悉了各种术语之后,开始安装数据库、sql服务、SSAS、SSIS

结果悲催的是,从官网下载了Express版本的2008数据库,怎么找都找不到SSAS、SSIS等服务。

为此足足失眠了3天左右的时间……

不过,功夫不负有心人,终于找到了一个可以十分简单的下载微软软件的网站,再次分享给各位朋友。

http://msdn.itellyou.cn/

同时,在此处分享一个sql Server 2008的安装图解

http://www.cnblogs.com/downmoon/archive/2010/05/18/1738479.html

国内关于BI的学习,在网络上资料比较有限,而且杂乱,本人在学习过程中会将一些学习心得在此与大家分享下,希望能给大家带来帮助。

C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)

C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)

 MSSQL

SQLITE

一、C# vs SQLite:

C# SQLite 字段名 类型 库类型 GetFieldType(#) 转换 备注 F_BOOL bool BIT NOT NULL Boolean     F_BOOL_NULL bool? BIT Boolean     F_SBYTE sbyte INT8 NOT NULL SByte sbyte_   F_SBYTE_NULL sbyte? INT8 SByte sbyte_   F_BYTE byte UINT8 NOT NULL Byte     F_BYTE_NULL byte? UINT8 Byte     F_SHORT short INT16 NOT NULL Int16     F_SHORT_NULL short? INT16 Int16     F_USHORT ushort UINT16 NOT NULL UInt16 ushort_   F_USHORT_NULL ushort? UINT16 UInt16 ushort_   F_INT int INT32 NOT NULL Int32     F_INT_NULL int? INT32 Int32     F_UINT uint UINT32 NOT NULL UInt32 uint_   F_UINT_NULL uint? UINT32 UInt32 uint_   F_LONG long INT64 NOT NULL Int64     F_LONG_NULL long? INT64 Int64     F_ULONG ulong UINT64 NOT NULL UInt64 ulong_   F_ULONG_NULL ulong? UINT64 UInt64 ulong_   F_FLOAT float FLOAT NOT NULL Double   不转兼容 F_FLOAT_NULL float? FLOAT Double   不转兼容 F_DOUBLE double DOUBLE NOT NULL Double     F_DOUBLE_NULL double? DOUBLE Double     F_DECIMAL decimal DECIMAL NOT NULL Decimal   存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335] F_DECIMAL_NULL decimal? DECIMAL Decimal   存取不一:<F_DECIMAL>: [-79228162514264300000000000000] != [-79228162514264337593543950335] F_CHAR char TEXT NOT NULL String     F_CHAR_NULL char? TEXT String     F_STRING string TEXT NOT NULL String     F_STRING_NULL string TEXT String     F_DATETIME DateTime TEXT NOT NULL String     F_DATETIME_NULL DateTime? TEXT String                

二、 C# vs MySQL:

C# MySQL 字段名 类型 库类型 GetFieldType(#) 转换 备注 F_BOOL bool BOOL NOT NULL Boolean     F_BOOL_NULL bool? BOOL NULL Boolean     F_SBYTE sbyte TINYINT NOT NULL SByte sbyte_   F_SBYTE_NULL sbyte? TINYINT NULL SByte sbyte_   F_BYTE byte TINYINT UNSIGNED NOT NULL Byte     F_BYTE_NULL byte? TINYINT UNSIGNED NULL Byte     F_SHORT short SMALLINT NOT NULL Int16     F_SHORT_NULL short? SMALLINT NULL Int16     F_USHORT ushort SMALLINT UNSIGNED NOT NULL UInt16 ushort_   F_USHORT_NULL ushort? SMALLINT UNSIGNED NULL UInt16 ushort_   F_INT int INT NOT NULL Int32     F_INT_NULL int? INT NULL Int32     F_UINT uint INT UNSIGNED NOT NULL UInt32 uint_   F_UINT_NULL uint? INT UNSIGNED NULL UInt32 uint_   F_LONG long BIGINT NOT NULL Int64     F_LONG_NULL long? BIGINT NULL Int64     F_ULONG ulong BIGINT UNSIGNED NOT NULL UInt64 ulong_   F_ULONG_NULL ulong? BIGINT UNSIGNED NULL UInt64 ulong_   F_FLOAT float FLOAT NOT NULL Single   极值溢出 F_FLOAT_NULL float? FLOAT NULL Single   极值溢出 F_DOUBLE double DOUBLE NOT NULL Double     F_DOUBLE_NULL double? DOUBLE NULL Double     F_DECIMAL decimal DECIMAL NOT NULL Decimal   极值溢出 F_DECIMAL_NULL decimal? DECIMAL NULL Decimal   极值溢出 F_CHAR char CHARACTER NOT NULL String   中文报错 F_CHAR_NULL char? CHARACTER NULL String   中文报错 F_STRING string VARCHAR(50) NOT NULL String     F_STRING_NULL string VARCHAR(50) NULL String     F_DATETIME DateTime DATETIME NOT NULL DateTime     F_DATETIME_NULL DateTime? DATETIME NULL DateTime                

三、 C# vs MSSQL:

C# MSSQL 字段名 类型 库类型 GetFieldType(#) 转换 备注 F_BOOL bool bit NOT NULL Boolean     F_BOOL_NULL bool? bit NULL Boolean     F_SBYTE sbyte smallint NOT NULL Int16 sbyte_short   F_SBYTE_NULL sbyte? smallint NULL Int16 sbyte_short   F_BYTE byte tinyint NOT NUL; Byte     F_BYTE_NULL byte? tinyint NULL Byte     F_SHORT short smallint NOT NULL Int16     F_SHORT_NULL short? smallint NULL Int16     F_USHORT ushort int NOT NULL Int32 ushort_int   F_USHORT_NULL ushort? int NULL Int32 ushort_int   F_INT int int NOT NULL Int32     F_INT_NULL int? int NULL Int32     F_UINT uint bigint NOT NULL Int64 uint_long   F_UINT_NULL uint? bigint NULL Int64 uint_long   F_LONG long bigint NOT NULL Int64     F_LONG_NULL long? bigint NULL Int64     F_ULONG ulong real NOT NULL Single ulong_float   F_ULONG_NULL ulong? real NULL Single ulong_float   F_FLOAT float real NOT NULL Single     F_FLOAT_NULL float? real NULL Single     F_DOUBLE double float NOT NULL Double     F_DOUBLE_NULL double? float NULL Double     F_DECIMAL decimal decimal NOT NULL Decimal   极值溢出 F_DECIMAL_NULL decimal? decimal NULL Decimal   极值溢出 F_CHAR char char(1) NOT NULL String     F_CHAR_NULL char? char(1) NULL String     F_STRING string varchar(50) NOT NULL F_STRING:     F_STRING_NULL string varchar(50) NULL String     F_DATETIME DateTime datetime NOT NULL DateTime   必须介于 1/1/1753 12:00:00 AM 12/31/9999 11:59:59 PM 之间。 F_DATETIME_NULL DateTime? datetime NULL DateTime                

四、C# vs Oracle:

C# Oracle 字段名 类型 库类型 GetFieldType(#) 转换 备注 F_BOOL bool CHAR(1) NOT NULL String bool_string   F_BOOL_NULL bool? CHAR(1) String bool_string   F_SBYTE sbyte NUMBER(3) NOT NULL Int16 sbyte_short   F_SBYTE_NULL sbyte? NUMBER(3) Int16 sbyte_short   F_BYTE byte NUMBER(3) NOT NULL Int16 byte_short   F_BYTE_NULL byte? NUMBER(3) Int16 byte_short   F_SHORT short NUMBER(5) NOT NULL Int32 short_int   F_SHORT_NULL short? NUMBER(5) Int32 short_int   F_USHORT ushort NUMBER(5) NOT NULL Int32 ushort_int   F_USHORT_NULL ushort? NUMBER(5) Int32 ushort_int   F_INT int NUMBER(10) NOT NULL Int64 int_long   F_INT_NULL int? NUMBER(10) Int64 int_long   F_UINT uint NUMBER(10) NOT NULL Int64 uint_long   F_UINT_NULL uint? NUMBER(10) Int64 uint_long   F_LONG long NUMBER(19) NOT NULL Decimal long_decimal   F_LONG_NULL long? NUMBER(19) Decimal long_decimal   F_ULONG ulong NUMBER(19) NOT NULL Decimal ulong_decimal   F_ULONG_NULL ulong? NUMBER(19) Decimal ulong_decimal   F_FLOAT float BINARY_FLOAT NOT NULL Single     F_FLOAT_NULL float? BINARY_FLOAT Single     F_DOUBLE double BINARY_DOUBLE NOT NULL Double   极值溢出 F_DOUBLE_NULL double? BINARY_DOUBLE Double   极值溢出 F_DECIMAL decimal DECIMAL(33,3) NOT NULL Decimal     F_DECIMAL_NULL decimal? DECIMAL(33,3) Decimal     F_CHAR char CHAR(1) NOT NULL String     F_CHAR_NULL char? CHAR(1) String     F_STRING string VARCHAR(50) NOT NULL String   不允许空字符 F_STRING_NULL string VARCHAR(50) String   不允许空字符 F_DATETIME DateTime TIMESTAMP NOT NULL DateTime   大值读取报错 F_DATETIME_NULL DateTime? TIMESTAMP DateTime   大值读取报错            

附、类型转换:

using System;
using System.Collections.Generic;
using System.Text; namespace vJine.Core.ORM { public class TypeConverter { public class sbyte_ /*: IConverter<sbyte>*/ { public static sbyte CONV_Q(object V) { return (sbyte)V; } } public class ushort_ /*: IConverter<ushort>*/ { public static ushort CONV_Q(object V) { return (ushort)V; } } public class uint_ /*: IConverter<uint>*/ { public static uint CONV_Q(object V) { return (uint)V; } } public class ulong_ /*: IConverter<ulong>*/ { public static ulong CONV_Q(object V) { return (ulong)V; } } public class bool_string /*: IConverter<bool>*/ { public static object CONV_I(object V) { if ((bool)V == true) { return "1"; } else { return "0"; } } public static bool CONV_Q(object V) { if ((string)V == "1") { return true; } else { return false; } } } public class sbyte_short /*: IConverter<sbyte>*/ { public static object CONV_I(object V) { return Convert.ToInt16(V); } public static sbyte CONV_Q(object V) { return Convert.ToSByte(V); } } public class byte_short /*: IConverter<byte>*/ { public static object CONV_I(object V) { return Convert.ToInt16(V); } public static byte CONV_Q(object V) { return Convert.ToByte(V); } } public class short_int /*: IConverter<short>*/ { public static object CONV_I(object V) { return Convert.ToInt32(V); } public static short CONV_Q(object V) { return Convert.ToInt16(V); } } public class ushort_int /*: IConverter<ushort>*/ { public static object CONV_I(object V, string Name) { return Convert.ToInt32(V); } public static ushort CONV_Q(object V, string Name) { return Convert.ToUInt16(V); } } public class int_long /*: IConverter<int>*/ { public static object CONV_I(object V) { return Convert.ToInt64(V); } public static int CONV_Q(object V) { return Convert.ToInt32(V); } } public class uint_long /*: IConverter<uint>*/ { public static object CONV_I(object V) { return Convert.ToInt64(V); } public static uint CONV_Q(object V) { return Convert.ToUInt32(V); } } public class long_decimal /*: IConverter<long>*/ { public static object CONV_I(object V) { return decimal.Parse(V.ToString()); } public static long CONV_Q(object V) { return long.Parse(V.ToString()); } } public class ulong_float /*: IConverter<ulong>*/ { public static object CONV_I(object V) { return Convert.ToSingle(V); } public static ulong CONV_Q(object V) { return Convert.ToUInt64(V); } } public class ulong_decimal /*: IConverter<ulong>*/ { public static object CONV_I(object V) { return decimal.Parse(V.ToString()); } public static ulong CONV_Q(object V) { return ulong.Parse(V.ToString()); } } public class float_double /*: IConverter<float>*/ { public static object CONV_I(object V) { return Convert.ToDouble(V); } public static float CONV_Q(object V) { return Convert.ToSingle(V); } } public class char_string /*: IConverter<char>*/ { public static object CONV_I(object V) { if (V is Char) { return V; } else if (V is string) { string chars = (string)V; if (chars == "") { return ''\0''; } else { return chars[0]; } } else { throw new OrmException("Fail To Convert String[{0}] To Char", V); } } public static char CONV_Q(object V) { return ((string)V)[0]; } } public class DateTime_ /*: IConverter<DateTime>*/ { public static object CONV_I(object V) { return V; } public static DateTime CONV_Q(object V) { return (DateTime)V; } } } }
View Code

 

Connect to MSSQL Database using Flask-SQLAlchemy

Connect to MSSQL Database using Flask-SQLAlchemy

我正在尝试通过SQLAlchemy连接到本地MSSQL数据库。
以下是我的\uu init\uuuuy文件的代码摘录:

from flask import Flaskfrom flask_sqlalchemy import SQLAlchemyapp = Flask(__name__)app.config[''SQLALCHEMY_DATABASE_URI''] = ''mssql+pyodbc://HARRISONS-THINK/LendApp''db = SQLAlchemy(app)SQLALCHEMY_TRACK_MODIFICATIONS = False

下面是在我的型号.py文件:

from LendApp import dbclass Transaction(db.model):    transactionID = db.Column(db.Integer, primary_key=True)    amount = db.Column(db.Integer)    sender = db.Column(db.String(80))    receiver = db.Column(db.String(80))    def __repr__(self):        return ''Transaction ID: {}''.format(self.transactionID)

然后我使用Pycharm中的Python控制台连接到数据库
这两条线的执行:

>>> from LendApp import db>>> db.create_all()

This is resulting in the following error:

DBAPIError: (pyodbc.Error) (''IM002'', ''[IM002] [Microsoft][ODBC Driver Manager] Data source name not found and no default driver specified (0) (SQLDriverConnect)'')

我唯一能想到的就是我的数据库连接字符串不正确。我试着把它改成更标准的Pyodbc连接
字符串和includingdriver={sqlserver}但不占上风。如果有人能帮我解决这个问题,我将不胜感激。
谢谢

答案1

小编典典

所以我遇到了一个非常类似的问题,通过做
跟随。
遵循[SQL炼金术]
[文件](http://docs.sqlalchemy.org/en/latest/dialogs/mssql.html#模块-
sqlalchemy.dialones.mssql语言.pyodbc)我发现我可以使用我的pyodbc连接
字符串如下:

# Python 2.ximport urllibparams = urllib.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)# Python 3.ximport urllibparams = urllib.parse.quote_plus("DRIVER={SQL Server Native Client 10.0};SERVER=dagger;DATABASE=test;UID=user;PWD=password")engine = create_engine("mssql+pyodbc:///?odbc_connect=%s" % params)# using the above logic I just did the followingparams = urllib.parse.quote_plus(''DRIVER={SQL Server};SERVER=HARRISONS-THINK;DATABASE=LendApp;Trusted_Connection=yes;'')app.config[''SQLALCHEMY_DATABASE_URI''] = "mssql+pyodbc:///?odbc_connect=%s" % params

This then caused an additional error because I was also using Flask-Migrate
and apparently it doesn’t like % in the connection URI. So I did some more
digging and found this post.
I then changed the following line in my ./migrations/env.py file

From:

from flask import current_appconfig.set_main_option(''sqlalchemy.url'',                   current_app.config.get(''SQLALCHEMY_DATABASE_URI''))

To:

from flask import current_appdb_url_escaped = current_app.config.get(''SQLALCHEMY_DATABASE_URI'').replace(''%'', ''%%'')config.set_main_option(''sqlalchemy.url'', db_url_escaped)

在做了所有这些之后,我能够进行迁移,一切看起来都像
它现在工作正常。

今天的关于MSSQL 触发器的运用my sql 触发器的分享已经结束,谢谢您的关注,如果想了解更多关于asp.net-mvc-3 – 使用存储过程(MSSQL)时Dapper的缓存解决方案、BI学习走过的路---MSSQL 2008 安装过程、C# 数据类型映射 (SQLite,MySQL,MSSQL,Oracle)、Connect to MSSQL Database using Flask-SQLAlchemy的相关知识,请在本站进行查询。

本文标签: