Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/28.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 在不同的表上插入/更新条件_Sql_Postgresql - Fatal编程技术网

Sql 在不同的表上插入/更新条件

Sql 在不同的表上插入/更新条件,sql,postgresql,Sql,Postgresql,我有一个用户表和一个连接表,说明哪个用户可以做什么 例如,仅当执行该操作的用户出现在我的连接表中时,我才希望插入/更新新用户 有没有办法做到这一点?因为它涉及到在用户表中插入数据,所以连接表中不能有关于不存在的用户的数据 至于更新,您可以使用SQLWHERE EXISTS语句来检查连接表。例如,假设users表具有列名id主键,而junction表具有users表的外键user_id: 如果存在,请从Junctiontable中选择top 1,其中UserId=YourID 开始 在此处插入/更

我有一个用户表和一个连接表,说明哪个用户可以做什么

例如,仅当执行该操作的用户出现在我的连接表中时,我才希望插入/更新新用户


有没有办法做到这一点?

因为它涉及到在用户表中插入数据,所以连接表中不能有关于不存在的用户的数据

至于更新,您可以使用SQLWHERE EXISTS语句来检查连接表。例如,假设users表具有列名id主键,而junction表具有users表的外键user_id:


如果存在,请从Junctiontable中选择top 1,其中UserId=YourID 开始 在此处插入/更新语句。。。。
结束

帮助您变得容易:可能是类似于:插入到。。。选择哪里有。。。但是你的问题没有包含足够的细节来真正回答that@a_horse_with_no_name我有两张桌子,foo和bar。当我想插入到foo中时,我还想在插入之前检查一下bar中是否存在某些内容。请添加更多代码、输出的信息。。你想要什么,你得到什么。工具的名称及其版本。如果存在,请从Junctiontable中选择top 1,其中UserId=YourID-不同表上的条件BEGIN INSERT/UPDATE语句此处….-在所需的表端SQL Server上插入\更新2014@chubaka如果用户不存在,则该用户的数据不能在连接表中。您需要先插入用户,然后才能将与该用户相关的任何数据插入到连接表中。@chubaka您能解释一下吗,因为数据库不是按您要求的方式设计的。我有一个经理,他管理用户并创建用户,他自己也是用户,管理者与非管理者之间的区别在于,管理者位于我的名为管理者的连接表中,一旦管理者尝试插入新用户,我想检查该管理者是否真的是管理者,这要求我在插入新用户之前查找连接表。这只是插入前的一个简单的条件检查,这类事情是不可能的。@chubaka然后我误解了你的问题。这将是一个不同的过程。在执行插入或更新之前,您需要使用SELECT进行可能的检查。此外,您可能希望在问题中解释这种情况,并列出两个表的结构。
UPDATE users u 
   SET col_1 = 'val_1' 
WHERE EXISTS(SELECT * FROM junction_table WHERE user_id = u.id)