在本文中,我们将带你了解SQLSERVER外键约束NOACTION,CASCADE,SETNULL,SETDEFAULT在这篇文章中,我们将为您详细介绍SQLSERVER外键约束NOACTION,CA
在本文中,我们将带你了解SQLSERVER外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT在这篇文章中,我们将为您详细介绍SQLSERVER外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT的方方面面,并解答sqlserver外键约束怎么写常见的疑惑,同时我们还将给您一些技巧,以帮助您实现更有效的ASP 中用 select case 代替其他语言中的 switch case, default 用 case else、asp.net – DefaultConnection和membership – localsqlserver和defaultconnection之间的连接是什么、Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]、django:MySQL Strict Mode is not set for database connection ''default''。
本文目录一览:- SQLSERVER外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT(sqlserver外键约束怎么写)
- ASP 中用 select case 代替其他语言中的 switch case, default 用 case else
- asp.net – DefaultConnection和membership – localsqlserver和defaultconnection之间的连接是什么
- Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]
- django:MySQL Strict Mode is not set for database connection ''default''
SQLSERVER外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT(sqlserver外键约束怎么写)
大部分的资料是类似下面这样写的:
NO ACTION
指定如果试图删除/修改某一行,而该行的键被其他表的现有行中的外键所引用,则产生错误并回滚 DELETE/UPDATE语句。
CASCADE、SET NULL 和 SET DEFAULT
允许通过删除或更新键值来影响指定具有外键关系的表,这些外键关系可追溯到在其中进行修改的表。如果为目标表也定义了级联引用操作,那么指定的级联操作也将应用于删除或更新的那些行。不能为具有 timestamp 列的外键或主键指定 CASCADE。
ON DELETE CASCADE
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则也将删除所有包含那些外键的行。
ON UPDATE CASCADE
指定如果试图更新某一行中的键值 ,而该行的键值被其他表的现有行中的外键所引用,则组成外键的所有值也将更新到为该键指定的新值。 (如果 timestamp 列是外键或被引用键的一部分,则不能指定 CASCADE。 )
ON DELETE SET NULL
指定如果试图删除某一行,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON UPDATE SET NULL
指定如果试图更新某一行 ,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为 NULL。目标表的所有外键列必须可为空值,此约束才可执行。
ON DELETE SET DEFAULT
指定如果试图删除某一行 ,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON DELETE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。
ON UPDATE SET DEFAULT
指定如果试图更新某一行 ,而该行的键被其他表的现有行中的外键所引用,则组成被引用行中的外键的所有值将被设置为它们的默认值。目标表的所有外键列必须具 有默认值定义,此约束才可执行。如果某个列可为空值,并且未设置显式的默认值,则会使用 NULL 作为该列的隐式默认值。因 ON UPDATE SET DEFAULT 而设置的任何非空值在主表中必须有对应的值,才能维护外键约束的有效性。
看到以上颜色特殊的文字了吗?按文字的含义是不是ON UPDATE SET NULL、DEFAULT可以在不更改主表键值的情况下(即只要更改非主键的任何一列),子表中相应的外键值就改成null或default了呢?
答案是否定的,必须更改键值才会生效。
于是建议那些原创的、转载的,认真读读字眼,仔细写上文字。虽然实践试试便知,但是作为资料而言,务必追求正确严谨。MSDN干脆就不写键值,全部只写:“如果更新了父表中的相应行”,这样虽然无可厚非,但是却没有道明白:“必须更新键值”。而那些部分写部分不写的资料更让人迷惑。
另外,sqlSERVER 2000只支持 NO ACTION | CASCADE,2005版本以后才支持 SET NULL | SET DEFAULT。
ASP 中用 select case 代替其他语言中的 switch case, default 用 case else

这篇文章主要介绍了 ASP 中用 select case 代替其他语言中的 switch case, default 用 case else , 需要的朋友可以参考下
asp 中不能用 switch 语句,要用 select case 语句了
简单的介绍一下
选择报表的工作一样,如果语句。然而不同的是,他们可以检查多个值。当然,你有
多个相同的,如果.. else 语句,但是这并不总是最好的方法。
选择语句允许一个程序来计算表达式,并试图匹配表达式的值案件标签。如果找到匹
配,程序执行相关的声明。对于 SELECT 语句的语法如下:
select case expression
case label_1
statements_1
case label_2
statements_2
...
case else
statements_n
end select
该计划首先查找与匹配的表达式的值标签的情况,然后条控制转移到该条款,执行相
关的声明。如果没有找到匹配的标签,程序查找任择案 Else 子句,如果发现,将控制
转移到该条款,执行相关的声明。如果没有 Case Else 子句发现,程序继续执行的声明
后选择结束。利用休息时间,避免因进入下一个代码自动执行。
让我们考虑一个例子:
<%@ language="vbscript">
<%
Dim Flower
Flower = "rose"
select case flower
case "rose"
response.write(flower & " costs $2.50")
case "daisy"
response.write(flower & " costs $1.25")
case "orchild"
response.write(flower & " costs $1.50")
case else
response.write("There is no such flower in our shop")
end select
%>
例子 1、
<%
''/*ASP中用select case代替其他语言中的switch case, default用case else*/
dim today
today = 5
select case today
case 0
str = "星期天"
case 1
str = "星期一"
case 2
str = "星期二"
case 3
str = "星期三"
case 4
str = "星期四"
case 5
str = "星期五"
case 6
str = "星期六"
case 7, 8, 9
str = "today的值是7,8,或9"
case else
str = "未知"
end select
response.write str
response.End()
%>
/*------------输出结果--------
星期五
------------*/
实例 2、
board=request("board")
select case board
case "1"
boardName = "技术版"
case "2"
boardName = "信息版"
case "3"
boardName = "客服星空"
case "4"
boardName = "灌水区"
case "5"
boardName = "市场营销"
case "6"
boardName = "经理论坛"
case "7"
boardName = "影音论坛"
case "8"
boardName = "延伸服务"
case "9"
boardName = "东北片区"
case "10"
boardName = "市场动态"
case "11"
boardName = "群发交流"
case "12"
boardName = "hombre"
case "14"
boardName = "论坛"
case "15"
boardName = "在线答疑"
case else
boardName = ""
end select
注意:case "1" 后面不能有冒号,boardName = "技术版" 后面不能有分号,而且不能出现 break 语句
asp.net – DefaultConnection和membership – localsqlserver和defaultconnection之间的连接是什么
在web.config我有:
<connectionStrings> <clear /> <!--- need this to prevent using LocalsqlServer from machine.config or somewhere becouse it is not present when when publish to hosting --> <add name="DefaultConnection" providerName="System.Data.sqlClient" connectionString="Data Source=.\sqlEXPRESS;Initial Catalog=aspnet-Goaly-20120615111028;Integrated Security=sspI" /> </connectionStrings>
和
<membership defaultProvider="DefaultMembershipProvider"> <providers> <!-- I think this line is telling asp.net that I want the membership working agains defaultconnection,and not LocalsqlServer connection????? --> <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider,System.Web.Providers,Version=1.0.0.0,Culture=neutral,PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minrequiredPasswordLength="6" minrequiredNonalphanumericCharacters="0" passwordAttemptwindow="10" applicationName="/" /> </providers> </membership>
但后来却在抱怨:
The connection name 'LocalsqlServer' was not found in the applications configuration or the connection string is empty.
当我在设置选项卡中使用VS2012 RC的发布时,我得到一个ModelContext和一个DefaultConnection,那么这应该如何工作呢?
我想要的只是在与modelcontext创建的表相同的数据库中获取成员资格表.
这应该是如此,但我必须过分复杂一些.
谢谢你的帮助.
问候
larsi
解决方法
添加< / clear>在membership元素和rolemangaer元素(如果存在于web.config中)中的连接字符串之前的标记将解决该问题.
<membership defaultProvider="DefaultMembershipProvider"> <providers> <clear/> <!-- solves the issue --> <add name="DefaultMembershipProvider" type="System.Web.Providers.DefaultMembershipProvider,PublicKeyToken=31bf3856ad364e35" connectionStringName="DefaultConnection" enablePasswordRetrieval="false" enablePasswordReset="true" requiresQuestionAndAnswer="false" requiresUniqueEmail="false" maxInvalidPasswordAttempts="5" minrequiredPasswordLength="6" minrequiredNonalphanumericCharacters="0" passwordAttemptwindow="10" applicationName="/" /> </providers> </membership>
您也可以使用sqlMetal.exe将成员资格表添加到现有数据库.
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]
先是在日志里出现了
Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]
看网上的博客,以为是XML中事务标签配错了,检查了好一阵子,发现并没有错。
接下来看日志中的报错
MySQLIntegrityConstraintViolationException: Column ''id'' in field list is ambiguous
违反唯一建约束???
然后我去代码里查看,发现是代码逻辑写错了,
public ServerResponse<String> checkValid(String str, String type) {
if (StringUtils.isNotBlank(type)) {
if (Const.USERNAME.equals(type)) {
int resultCount = userMapper.checkUsername(str);
if (resultCount > 0) {
return ServerResponse.createByErrorMessage("用户名已存在");
}
}
if (Const.EMAIL.equals(type)) {
int resultCount = userMapper.checkEmail(str);
if (resultCount > 0) {
return ServerResponse.createByErrorMessage("Email已存在");
}
}
} else {
return ServerResponse.createByErrorMessage("参数错误");
}
return ServerResponse.createBySuccessMessage("校验成功");
}
if (resultCount > 0) {
return ServerResponse.createByErrorMessage("用户名已存在");
}
本来是从数据找到一条数据,说明数据库里已经有该用户,不应该放行,我把条件写成了等于0,使这条重复的记录进入数据库,造成违反唯一键
django:MySQL Strict Mode is not set for database connection ''default''
?: (mysql.W002) MySQL Strict Mode is not set for database connection ''default''
HINT: MySQL''s Strict Mode fixes many data integrity problems in MySQL, such as data truncation upon insertion, by escalating warnings into errors. It is strongly recommended you activate it. See: https://docs.djangoproject.com/en/2.1/ref/databases/#mysql-sql-mode
增加黄色配件的配置:
DATABASES = {
''default'': {
# ''ENGINE'': ''django.db.backends.sqlite3'',
# ''NAME'': os.path.join(BASE_DIR, ''db.sqlite3''),
''ENGINE'': ''django.db.backends.mysql'',
''NAME'': ''erebus'',
''USER'': ''root'',
''PASSWORD'': ''root'',
''HOST'': ''127.0.0.1'',
''PORT'': ''3306'',
''OPTIONS'': {
"init_command": "SET sql_mode=''STRICT_TRANS_TABLES''",
}
}
}
参考:https://www.jianshu.com/p/bc41a8bf9d9b
关于SQLSERVER外键约束NO ACTION,CASCADE,SET NULL,SET DEFAULT和sqlserver外键约束怎么写的问题我们已经讲解完毕,感谢您的阅读,如果还想了解更多关于ASP 中用 select case 代替其他语言中的 switch case, default 用 case else、asp.net – DefaultConnection和membership – localsqlserver和defaultconnection之间的连接是什么、Closing non transactional SqlSession [org.apache.ibatis.session.defaults.DefaultSqlSession@38e46e4a]、django:MySQL Strict Mode is not set for database connection ''default''等相关内容,可以在本站寻找。
本文标签: