㈠ 当你在更新某条数据时,怎么用sql语句锁定而不让别人同时更新 请知道的说下。 谢谢了
你更新的时候,你更新的数据上本身就加了排他锁的,在你更新的这段时间其他人无法再修改数据。或者还有别的操作后再释放这些数据的话可以用事务。
㈡ 如何保证一批SQL语句执行的完整性
为了保证数据库数据的安全可靠性和正确有效,DBMS必须提供统一的数据保护功能。数据保护也为数据控制,主要包括数据库的安全性、完整性、并发控制和恢复。
1. 数据库的存取控制
ORACLE保护信息的方法采用任意存取控制来控制全部用户对命名对象的存取。用户对对象的存取受特权控制。一种特权是存取一命名对象的许可,为一种规定格式。
ORACLE使用多种不同的机制管理数据库安全性,其中有两种机制:模式和用户。模式为模式对象的集合,模式对象如表、视图、过程和包等。第一数据库有一组模式。
每一ORACLE数据库有一组合法的用户,可存取一数据库,可运行一数据库应用和使用该用户各连接到定义该用户的数据库。当建立一数据库用户时,对该用户建立一个相应的模式,模式名与用户名相同。一旦用户连接一数据库,该用户就可存取相应模式中的全部对象,一个用户仅与同名的模式相联系,所以用户和模式是类似的。
用户的存取权利受用户安全域的设置所控制,在建立一个数据库的新用户或更改一已有用户时,安全管理员对用户安全域有下列决策:
l 是由数据库系统还是由操作系统维护用户授权信息。
l 设置用户的缺省表空间和临时表空间。
l 列出用户可存的表空间和在表空间中可使用空间份额。
l 设置用户资源限制的环境文件,该限制规定了用户可用的系统资源的总量。
l 规定用户具有的特权和角色,可存取相应的对象。
每一个用户有一个安全域,它是一组特性,可决定下列内容:
l 用户可用的特权和角色;
l 用户可用的表空间的份额;
l 用户的系统资源限制。
1) 用户鉴别:
为了防止非授权的数据库用户的使用,ORACLE提供二种确认方法
操作系统确认和相应的ORACLE数据库确认。
如果操作系统允许,ORACLE可使用操作系统所维护的信息来鉴定用户。由操作系统鉴定用户的优点是:
l 用户可更方便地连接到ORACLE,不需要指定用户名和口令。
l 对用户授权的控制集中在操作系统,ORACLE不需要存储和管理用户口令。然而用户名在数据库中仍然要维护。
l 在数据库中的用户名项和操作系统审计跟踪相对应。
ORACLE数据库方式的用户确认:ORACLE利用存储在数据库中的信息可鉴定试图接到数据库的一用户,这种鉴别方法仅当操作系统不能用于数据库用户鉴别时才使用。当用户使用一ORACLE数据库时执行用户鉴别。每个用户在建立时有一个口令,用户口令在建立对数据库连接时使用,以防止对数据库非授权的使用。用户的口令以密码的格式存储在数据库数据字典中,用户可随时修改其口令。
2) 用户的表空间设置和定额
关于表空间的使用有几种设置选择:
l 用户的缺省表空间;
l 用户的临时表空间;
l 数据库表空间的空间使用定额。
3) 用户资源限制和环境文件
用户可用的各种系统资源总量的限制是用户安全域的部分。利用显式地设置资源限制;安全管理员可防止用户无控制地消耗宝贵的系统资源。资源限制是由环境文件管理。一个环境文件是命名的一组赋给用户的资源限制。另外ORACLE为安全管理员在数据库级提供使能或使不能实施环境文件资源限制的选择。
ORACLE可限制几种类型的系统资源的使用,每种资源可在会话级、调用级或两者上控制。在会话级:每一次用户连接到一数据库,建立一会话。每一个会话在执行SQL语句的计算机上耗费CPU时间和内存量进行限制。对ORACLE的几种资源限制可在会话级上设置。如果会话级资源限制被超过,当前语句被中止(回滚),并返回指明会话限制已达到的信息。此时,当前事务中所有之前执行的语句不受影响,此时仅可作COMMIT、ROLLBACK或删除对数据库的连接等操作,进行其它操作都将出错。
在调用级:在SQL语句执行时,处理该语句有好几步,为了防止过多地调用系统,ORACLE在调用级可设置几种资源限制。如果调用级的资源限制被超过,语句处理被停止,该语句被回滚,并返回一错误。然而当前事务的已执行所用语句不受影响,用户会话继续连接。
二、 数据完整性
它是指数据的正确性和相容性。数据的完整性是为了防止数据库存在不符合主义的数据,防止错误信息输入和输出,即数据要遵守由DBA或应用开发者所决定的一组预定义的规则。ORACLE应用于关系数据库的表的数据完整性有下列类型:
l 在插入或修改表的行时允许不允许包含有空值的列,称为空与非空规则。
l 唯一列值规则,允许插入或修改的表行在该列上的值唯一。
l 引用完整性规则,同关系模型定义
l 用户对定义的规则,为复杂性完整性检查。
ORACLE允许定义和实施上述每一种类型的数据完整性规则,这些规则可用完整性约束和数据库触发器定义。
完整性约束,是对表的列定义一规则的说明性方法。
数据库触发器,是使用非说明方法实施完整性规则,利用数据库触发器(存储的数据库过程)可定义和实施任何类型的完整性规则。
1. 完整性约束
ORACLE利用完整性约束机制防止无效的数据进入数据库的基表,如果任何DML执行结果破坏完整性约束,该语句被回滚并返回一上个错误。ORACLE实现的完整性约束完全遵守ANSI
X3。135-1989和ISO9075-1989标准。
利用完整性约束实施数据完整性规则有下列优点:
l 定义或更改表时,不需要程序设计,便很容易地编写程序并可消除程序性错误,其功能是由ORACLE控制。所以说明性完整性约束优于应用代码和数据库触发器。
l 对表所定义的完整性约束是存储在数据字典中,所以由任何应用进入的数据都必须遵守与表相关联的完整性约束。
l 具有最大的开发能力。当由完整性约束所实施的事务规则改变时,管理员只需改变完整性约束的定义,所有应用自动地遵守所修改的约束。
l 由于完整性约束存储在数据字典中,数据库应用可利用这些信息,在SQL语句执行之前或由ORACLE检查之前,就可立即反馈信息。
l 由于完整性约束说明的语义是清楚地定义,对于每一指定说明规则可实现性能优化。
l
由于完整性约束可临时地使不能,以致在装入大量数据时可避免约束检索的开销。当数据库装入完成时,完整性约束可容易地使其能,任何破坏完整性约束的任何新行在例外表中列出。
ORACLE的DBA和应用开始者对列的值输入可使用的完整性约束有下列类型:
l NOT NULL约束:如果在表的一列的值不允许为空,则需在该列指定NOT NULL约束。
l
UNIQUE码约束:在表指定的列或组列上不允许两行是具有重复值时,则需要该列或组列上指定UNIQUE码完整性约束。在UNIQUE码约束定义中的列或组列称为唯一码。所有唯一完整性约束是用索引方法实施。
l PRIMARY KEY约束:在数据库中每一个表可有一个PRIMARY KEY约束。包含在PRIMARY
KEY完整性约束的列或组列称为主码,每个表可有一个主码。ORACLE使用索引实施PRIMARY KEY约束。
l FOREIGN
KEY约束(可称引用约束):在关系数据库中表可通过公共列相关联,该规则控制必须维护的列之间的关系。包含在引用完整性约束定义的列或组列称为外来码。由外来码所引用的表中的唯一码或方码,称为引用码。包含有外来码的表称为子表或从属表。由子表的外来码所引用的表称为双亲表或引用表。如果对表的每一行,其外来码的值必须与主码中一值相匹配,则需指定引用完整性约束。
l
CHECK约束:表的每行对一指定的条件必须是TRUE或未知,则需在一列或列组上指定CHECK完整性约束。如果在发出一个DML语句时,CHECK约束的条件计算得FALSE时,该语句被回滚。
㈢ 在 SQL Server 中,如何在并发环境下保证客户端查询的数据不重复
与服务器配置相关,sql可以自行设置并发数与最大可用内存,是否并发也还得看程序,不然sql并发再多,程序也得排队交sql
㈣ SQL2008 做个触发器为了确保数据第一条记录不被删除! 执行数据库表删除数据时从该表中的第二条记录开始删
需要一个排序字段或者主键,来判断哪条为第一条记录。
create trigger tri_delete
on table1 instead of delete
as
begin
declare @id int
select top 1 @id=id from table1 order by id ------取table1的第一条记录的id
delete from table1 where exists(select * from deleted where id=table1.id and id<>@id)-------删除table1中id不等于第一条记录id的记录。
end;
㈤ 怎样从sql数据库中一次随机读取一条数据,而且以后随机读取出的数据不能和以前每次随机读取出的数据重复
一个简单的办法是你另外建一个历史记录表,每次问题抽出来后把那问题插到历史表中,当你抽下一提时只抽取历史表中不存在的题目就可以了.
㈥ 如何在sql数据库中的一张表里每增加一条记录就将该记录的其中一个值修改其他值不变重新再该表中插入
这个用触发器处理比较好
你可以创建一个插入触发器,当插入数据时将id 自动更新为要修改的值
类别如下其中inserted为触发器中的临时表,其结构与原表一样,保存新插入或修改后的数据。
create trigger insert_a_tri on A after insert as
update A set A.id = 'A' + A.id from inserted b where A.id = b.id and a.datetime = b.datetime and a.testno = b.testno
㈦ 在sql数据库里,如何操作才能清空数据,而保持结构不变
有两种方法
第一种最快,清空数据库,指把表留下来 把表中的数据都删掉??
方法就是把数据库生成SQL脚本.只生成表结构.数据不生成.
删出数据库 然后执行SQL脚本 不就可以了。..
第二种就是一个表一个表地清空数据了。
用TRUNCATE TABLE 表名
㈧ SQL语句一列数据相同只显示一条,其他数据不变
JavaScript Document
function show(str)
{
var str1="td"+str;
var str="show"+str;
for (var i=1; i<18; i++)
{
var obj = document.getElementById('show' + i.toString());
if (obj) obj.style.display = 'none';
}
document.getElementById(str).style.display="block";
}
㈨ 如何复制 ms sql 表结构,目标表数据不变
导入是不能实现这种功能的。最好将本地的改变生成SQL语句,然后在远程服务器上执行。执行前记得备份,毕竟安全第一啊
数据会被清空?谁说的呀,又不是让你执行创建语句,使用
alter table .....这样的语句不会么?
㈩ SQL中如何保证某个特定的数据不能被删掉
insert into album values(1,'xxx','zzz','ccc')
create trigger tbl_delete
on album
for delete
as
if ((select count(*) from deleted where album_name='xxx')>0)
begin
rollback transaction
print '不能删除'
end
go
delete album where album_name='xxx'
select * from album
结果显示:不能删除
大概的意思就是这样,希望对你思路有帮助