我知道COLUMNS_UPDATED,我需要一些快速的快捷方式(如果有人做了,我已经制作了一个,但如果有人可以节省我的时间,我会恭维它)
我需要基本上只有更新列值的XML,我需要这个用于复制目的.
SELECT*FROM inserted为我提供了每一列,但我只需要更新的列.
像下面这样......
CREATE TRIGGER DBCustomers_Insert
ON DBCustomers
AFTER UPDATE
AS
BEGIN
DECLARE @sql as NVARCHAR(1024);
SET @sql = 'SELECT ';
I NEED HELP FOR FOLLOWING LINE ...., I can manually write every column, but I need
an automated routin which can work regardless of column specification
for each column, if its modified append $sql = ',' + columnname...
SET @sql = $sql + ' FROM inserted FOR XML RAW';
DECLARE @x as XML;
SET @x …Run Code Online (Sandbox Code Playgroud) 我想将一个表中的所有NULL字段更新为0.当然
UPDATE mytable SET firstcol=0 WHERE firstcol IS NULL
Run Code Online (Sandbox Code Playgroud)
会做的.但我想知道是否有更智能的解决方案,而不仅仅是c&p每行的这一行.
我基本上只是尝试更新表中的多个值.最好的方法是什么?这是当前的代码:
$postsPerPage = $_POST['postsPerPage'];
$style = $_POST['style'];
mysql_connect ("localhost", "user", "pass") or die ('Error: ' . mysql_error());
mysql_select_db ("db");
mysql_query("UPDATE settings SET postsPerPage = $postsPerPage WHERE id = '1'") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
我想要包括的另一个更新是:
mysql_query("UPDATE settings SET style = $style WHERE id = '1'") or die(mysql_error());
Run Code Online (Sandbox Code Playgroud)
谢谢!
我想填充一个带有运行整数的表列,所以我想使用ROWNUM.但是,我需要根据其他列的顺序填充它,例如ORDER BY column1, column2.遗憾的是,由于Oracle不接受以下声明,因此不可能:
UPDATE table_a SET sequence_column = rownum ORDER BY column1, column2;
Run Code Online (Sandbox Code Playgroud)
也不是以下语句(尝试使用WITH子句):
WITH tmp AS (SELECT * FROM table_a ORDER BY column1, column2)
UPDATE tmp SET sequence_column = rownum;
Run Code Online (Sandbox Code Playgroud)
那么如何使用SQL语句并且不依赖于PL/SQL中的游标迭代方法呢?
我正在尝试做类似以下的事情:
model.updateAttributes({syncedAt: 'NOW()'});
Run Code Online (Sandbox Code Playgroud)
显然,这不起作用,因为它只是作为字符串传递.我想避免传递节点构造的时间戳,因为稍后我将它与另一个'ON UPDATE CURRENT_TIMESTAMP'字段进行比较,数据库和源可能运行不同的时间.
我唯一的选择就是制作数据库程序并调用它吗?
我正在使用MySql 5.5.37.我有一个包含以下列的表
+------------------+------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+------------------+------------------+------+-----+---------+-------+
| ID | varchar(32) | NO | PRI | NULL | |
| CODE | varchar(6) | NO | UNI | NULL | |
Run Code Online (Sandbox Code Playgroud)
代码列是唯一的,我的ID列是GUID.根据上表中的某些条件(例如WHERE COLUMN1 = 0),我想要更新多行.如何为我的CODE列生成随机的,唯一的6个字符的代码(理想情况是字母和数字),以便它们不违反我表中的唯一约束?请注意,表中不符合条件的列(例如,其中COLUMN1 <> 0)已经具有CODE列的唯一值.
编辑:这与这个问题不同 - 使用MySQL生成随机和唯一的8个字符串,因为该链接处理ID taht是数字.我的ID是32个字符的字符串.此外,他们的解决方案没有考虑在运行我想要运行的语句之前表中可能有值的事实,这将为相关列生成唯一值.
如果更新的版本不会违反主键约束,我想更新我的 postgres 数据库中的行。如果可以,我想保持原样。
假设表有主键col1, col2, col3,如果我运行这样的查询:
UPDATE table SET (col1, col2) = ('A', 'B')
WHERE col1='D' AND col2='E';
Run Code Online (Sandbox Code Playgroud)
查询将失败,如果存在两个条目,我将收到重复键错误:
'A', 'B', 'C'
'D', 'E', 'C'
Run Code Online (Sandbox Code Playgroud)
即col3在现有行和要更新的行之间是相同的。
如果我正在INSERT使用我会使用的行,ON CONFLICT DO NOTHING但我找不到它的实现UPDATE。是否存在等价物?
我有一个约100列(90%可空)的遗留表.在这90个列中,我想删除所有空字符串并将它们设置为null.我知道我可以:
update table set column = NULL where column = '';
update table set column2 = NULL where column2 = '';
Run Code Online (Sandbox Code Playgroud)
但这很乏味且容易出错.在整个桌子上必须有一种方法吗?
如何更新子查询中也存在的表?我需要分2个阶段吗?(创建一个临时表 - 将所选数据放入其中,然后更新最终表)
我正在尝试使用每个CTN的网络标签更新invoiceLine表.
最终结果将是:
invoiceLine
ctn network
1234 network1
2345 network2
3456 network1
Run Code Online (Sandbox Code Playgroud)我有以下表格:
invoiceLine
ctn network
1234 null
2345 null
3456 null
Run Code Online (Sandbox Code Playgroud)终奌站
ctn network
1234 1
2345 2
3456 1
Run Code Online (Sandbox Code Playgroud)网络
id label
1 network1
2 network2
Run Code Online (Sandbox Code Playgroud)我可以运行一个选择,但我不知道如何使用连接更新:
update invoiceLine
inner join terminal on terminal.ctn = invoiceLine.ctn
set invoiceLine.network =
(
select network.label
from invoiceLine
inner join terminal on terminal.ctn = invoiceLine.ctn
inner join network on network.id = terminal.network
)
where invoiceLine.ctn = terminal.ctn
Run Code Online (Sandbox Code Playgroud)
但MySQL抛出一个
错误代码:1093.您无法在FROM子句中为更新指定目标表'invoiceLine'
我需要定期使用文件中收到的数据增加列中的值.该表有> 400000行.到目前为止,我的所有尝试都会导致性能非常差.我写了一个反映我要求的实验:
#create table
engine = create_engine('sqlite:///bulk_update.db', echo=False)
metadata = MetaData()
sometable = Table('sometable', metadata,
Column('id', Integer, Sequence('sometable_id_seq'), primary_key=True),
Column('column1', Integer),
Column('column2', Integer),
)
sometable.create(engine, checkfirst=True)
#initial population
conn = engine.connect()
nr_of_rows = 50000
insert_data = [ { 'column1': i, 'column2' : 0 } for i in range(1, nr_of_rows)]
result = conn.execute(sometable.insert(), insert_data)
#update
update_data = [ {'col1' : i, '_increment': randint(1, 500)} for i in range(1, nr_of_rows)]
print "nr_of_rows", nr_of_rows
print "start time : " + str(datetime.time(datetime.now()))
stmt = …Run Code Online (Sandbox Code Playgroud) sql-update ×10
sql ×6
mysql ×5
bulk-load ×1
constraints ×1
datetime ×1
join ×1
node.js ×1
oracle ×1
php ×1
postgresql ×1
python ×1
random ×1
rownum ×1
select ×1
sequelize.js ×1
sql-insert ×1
sql-server ×1
sqlalchemy ×1
sqlite ×1
string ×1
triggers ×1
unique ×1
where-clause ×1