我目前有两个模式,A和B.
B有一个表,A执行选择插入和更新.
在我们的sql脚本中,我们已授予A权限,以便它可以完成其任务.
grant select on B.thetable to A
etc,etc
Run Code Online (Sandbox Code Playgroud)
现在,表'thetable'被删除,另一个表每天至少重命名为B.
rename someothertable to thetable
Run Code Online (Sandbox Code Playgroud)
执行此操作后,当A执行B.thetable上的选择时,我们会收到错误.
ORA-00942: table or view does not exist
Run Code Online (Sandbox Code Playgroud)
是否有可能在执行drop + rename操作后,授权也会丢失?
我们是否必须再次分配权限?
有些人没有补助金.
将数据插入'thetable'的每日进程每N次插入执行一次提交,因此无法执行任何回滚.这就是我们使用2张桌子的原因.
提前致谢
作为安全紧缩练习,我将从oracle数据库用户中删除所有系统权限.现在,该用户仅具有以下系统权限:
我希望用户不能做任何DDL命令.但令我惊讶的是,用户可以在自己的架构中使用DROP TABLE,即使它无法创建一个.
Oracle 文档说DROP TABLE的先决条件是"表必须在您自己的模式中,或者您必须具有DROP ANY TABLE系统特权".只是!!!我不了解Oracle的安全逻辑,但是有什么方法可以阻止用户放弃他们自己的表吗?
另一种方法是创建另一个用户来运行应用程序并授予对象访问权限,由于存在潜在问题,我宁愿避免这种情况.
我有一个表与另一个表有外键关系.
我想检查如果存在这种关系,请删除它.
如何编写此查询.
谢谢.
我想放一张桌子 drop table EMPLOYEE;
但我得到错误: #1217 - Cannot delete or update a parent row: a foreign key constraint fails
我在互联网上环顾四周,以显示隐藏的限制,并发现:
CREATE TABLE `EMPLOYEE` (
`Ssn` int(9) NOT NULL,
`Dno` int(11) NOT NULL,
UNIQUE KEY`Ssn_8` (`Ssn`),
UNIQUE KEY`Dno_13` (`Dno`),
CONSTRAINT `EMPLOYEE_ibfk_1` FOREIGN KEY(`Dno`) REFERENCES `DEPARTMENT` (`Dnumber`),
CONSTRAINT `EMPLOYEE_ibfk_2` FOREIGN KEY(`Dno`) REFERENCES `DEPARTMENT` (`Dnumber`),
CONSTRAINT `EMPLOYEE_ibfk_3` FOREIGN KEY(`Dno`) REFERENCES `EMPLOYEE` (`Dno`),
CONSTRAINT `EMPLOYEE_ibfk_4` FOREIGN KEY(`Dno`) REFERENCES `EMPLOYEE` (`Dno`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1
CREATE TABLE `DEPARTMENT` (
`Dnumber` int(11) NOT NULL,
`Mgr_ssn` int(9) …Run Code Online (Sandbox Code Playgroud) 在SQLPlus中执行脚本时我遇到了一个问题:
script.sql包含以下行
@some_pkg.pks
@some_pkg.pkb
drop package some_pkg;
/
Run Code Online (Sandbox Code Playgroud)
打电话后
> sqlplus用户/密码@dbname @ script.sql
控制台中包含以下消息:
Package created.
Package body created.
Package dropped.
drop package some_pkg;
*
ERROR at line 1:
ORA-04043: object SOME_PKG does not exist
Run Code Online (Sandbox Code Playgroud)
请解释一下这里发生了什么.看起来包被丢弃了两次.有可能避免错误吗?
我在学习Python之后正在学习PostgreSQL。我关注tutorialspoint.com 网站。
没有问题,直到我创建一个触发器并且它像一个魅力一样工作。
但是当我尝试删除(即删除)触发器时,出现以下错误。
DROP TRIGGER example_trigger;
ERROR: syntax error at or near ";"
LINE 1: DROP TRIGGER example_trigger;
^
Run Code Online (Sandbox Code Playgroud)
我不确定为什么会收到此错误。请帮帮我。这是常见的还是我错了?
database postgresql syntax-error sql-drop postgresql-triggers
我正在T-SQL中编写一个函数,无论日期输入如何,都会返回该月的最后一天.
这是我的代码:
Alter Function dbo.FN_Get_Last_Day_in_Month2
(@FN_InputDt Datetime)
Returns smalldatetime
as
Begin
Declare @Result smalldatetime
Set @Result =
case when @FN_InputDt <> 01-01-1900 then
DATEADD(m, DATEDIFF(M, 0,@FN_InputDt)+1, -1)
Else 0 End
Return @Result
End
Run Code Online (Sandbox Code Playgroud)
代码无法正常工作,这是一个显示不良行为的测试:
SELECT dbo.fn_get_last_day_in_month (07-05-2010)
Run Code Online (Sandbox Code Playgroud)
这是(不正确的)结果:
2010-07-31 00:00:00
Run Code Online (Sandbox Code Playgroud) 我正在创建一个表"InterviewTemp",在那里插入数据,用该数据更新第二个表,然后删除"InterviewTemp"表.
有一个例子:
CREATE TABLE [entrevistasTemp](
[id_usuario] [int] NULL,
[id_entrevista] [int] NULL,
[comentarios] [varchar](300) NULL
)
INSERT [entrevistasTemp] ([id_usuario], [id_entrevista], [comentarios]) VALUES (12099, 4515, CONVERT(TEXT, N'Riesgo muy alto. Marun Victoria, '))
INSERT [entrevistasTemp] ([id_usuario], [id_entrevista], [comentarios]) VALUES (15347, 4516, CONVERT(TEXT, N'Riesgo muy alto. Marun Victoria, '))
UPDATE entrevistas
set entrevistas.comentarios = entrevistasTemp.comentarios
from entrevistasTemp
WHERE entrevistas.id = entrevistasTemp.id_entrevista
drop table entrevistasTemp
Run Code Online (Sandbox Code Playgroud)
还有更好的方法吗?
编辑:只插入4.5k行
sql-drop ×10
oracle ×3
sql ×3
foreign-keys ×2
mysql ×2
create-table ×1
database ×1
date ×1
datetime ×1
db2 ×1
exists ×1
grant ×1
ora-00942 ×1
postgresql ×1
rename ×1
security ×1
sql-server ×1
sqlplus ×1
syntax-error ×1
t-sql ×1