所以我有两张桌子:
Bookmarks 有几列[id等]Person_Bookmark 有2列[personId,bookmarkId]Bookmarks代表其他网站的链接.所有有效的书签都有一个id.该Person_Bookmark表有一堆personIds和他们的书签,显示为bookmarkId.
这是我的伪代码:
> let x = integer list of all bookmarkId's from Person_Bookmark
>
> for each x {
> if ('select * from 'Bookmarks' where 'id' = x returns 0 rows) {
> delete from 'person_bookmark' where 'bookmarkId' = x
> }
> }
Run Code Online (Sandbox Code Playgroud)
请告诉我如何转换为Postgres [edit] SQL脚本.
我已经检查了所有错误:主键,唯一性和类型.访问只是似乎无法链接我在我的数据库中的2个字段.有人可以看看吗?
http://www.jpegtown.com/pictures/jf5WKxKRqehz.jpg
谢谢.
外键,约束,默认值等项目是否应由数据库管理系统(在本例中为MS Sql 2005)或应用程序处理?我听过双方的意见,老实说我不确定要走哪条路.
我原本打算将它构建到数据库中,但是我发现使用当前的数据库设计并不总是这样.例如,某些表包含循环引用,无法使用链接ON UPDATE CASCADE.我遇到的另一个问题是我们可能会使用多个数据库/服务器,并且外键约束在链接服务器上不起作用.
我有一些开发人员建议我在应用程序层进行数据验证,并将数据库保留为存储数据的地方.我喜欢这个想法,但我已经在很多地方读过,最好在数据库中建立参照完整性,以允许不通过应用层传递的事务.我同意这一点,虽然当我们完成所有数据库事务时应该通过应用程序.即使我们决定稍后构建插件,我们也在使用ObjectModel框架,因此永远不需要重写插入/更新/删除查询.
所以我的问题是,在这种情况下,你仍然建议在数据库中构建引用完整性,还是可以将它构建到应用程序层中?为什么?
如果我创建外键是参照完整性自动?我是否必须设置其他任何内容才能进行级联工作?
编辑:例如,在postgres中.我的意思是通过自动,我不需要设置其他任何东西,使RI工作.删除.我猜测虽然FK意味着它将确保插入的FK中存在数据.
我想在执行错误查询时从SQL Server获取消息号和严重性级别信息.
例如,当用户尝试删除另一条记录引用的行,并且级联关系为"无操作"时,我希望应用程序能够检查错误消息547("DELETE语句与REFERENCE constraint ...")并向用户返回用户友好和本地化的消息.
在SQL Server上直接运行此类查询时,将打印以下消息:
Msg 547, Level 16, State 0, Line 1
<Error message...>
Run Code Online (Sandbox Code Playgroud)
在Asp.Net应用程序中,此信息是否可在事件处理程序参数或其他位置获得?
另外,我不认为有人知道在哪里可以找到SQL Server消息号的确切参考?
我正在使用此模型代码删除记录.
public function actionDelete($id)
{
$this->loadModel($id)->delete();
// if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
if(!isset($_GET['ajax']))
$this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}
Run Code Online (Sandbox Code Playgroud)
包含此记录的表与其他表具有一对多关系,具有删除限制约束.
因此,当删除子表中具有相关记录的记录时,它会抛出异常
CDbCommand failed to execute the SQL statement: SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`bzuexamsystem`.`campus`, CONSTRAINT `fk_Campus_City` FOREIGN KEY (`CityID`) REFERENCES `city` (`CityID`) ON UPDATE CASCADE). The SQL statement executed was: DELETE FROM `city` WHERE `city`.`CityID`=1
Run Code Online (Sandbox Code Playgroud)
是否有某种方式显示用户友好的错误消息.谢谢
asp.net ×1
database ×1
exception ×1
foreign-keys ×1
ldap ×1
ms-access ×1
openldap ×1
postgresql ×1
sql ×1
sql-server ×1
yii ×1