我不熟悉postgresql脚本.
我已经在ms sql server中使用了这个脚本:
SET IDENTITY_INSERT my_table ON
INSERT INTO my_table (
my_identity_field,
field1,
field2
)
SELECT
fieldA,
fieldB
FROM
my_other_table
WHERE
fieldC = some_value
SET IDENTITY_INSERT my_table OFF
Run Code Online (Sandbox Code Playgroud)
问题:PostgreSQL中的脚本'SET IDENTIFY_INSERT [table_name] ON/OFF'是什么?
谢谢
解决了 :
INSERT INTO my_table (
my_identity_field,
field1,
field2
)
SELECT
fieldA,
fieldB
FROM
my_other_table
WHERE
fieldC = some_value;
SELECT
setval(pg_get_serial_sequence('my_table', 'my_identity_field'),
(SELECT MAX(my_identity_field) FROM my_table));
Run Code Online (Sandbox Code Playgroud)
注意: 'my_table'和'my_identity_field'小写如果它们不是小写(所有字母),我会收到错误
##问题##
我从此脚本(Postgresql 9.3.2)中收到错误(
在MS SQL Server中可以)
SELECT
CASE COALESCE(my_date_field,0)
WHEN 0 THEN 0
ELSE 1 END
AS status
FROM
my_table
Run Code Online (Sandbox Code Playgroud)
Error :COALESCE types timestamp without time zone and integer cannot be matched
Line 2 : CASE COALESCE(my_date_field,0)
## 解决了 ##
SELECT
CASE WHEN my_date_field IS NULL
THEN 0 ELSE 1 END
AS status
FROM
my_table
Run Code Online (Sandbox Code Playgroud)
COALESCE几乎接受任何数量的参数,但是它们应该是相同的data-type。
我引用了TSQL中的COALESCE函数
为什么delphi在执行循环时执行整数的数学'not'而不是强制转换为布尔值?例
var myint:integer;
...
myint:=1;
while not myint=5 do
begin
myint:=myint+1;
showmessage('myint now is : '+inttostr(myint));
end;
Run Code Online (Sandbox Code Playgroud) 如何通过"修改日期"确定Windows目录中的哪个文件夹是最新的?
喜欢这个,但对于文件夹而不是文件.
我需要创建一个类似的函数 GetLastModifiedFolderName('D:\LogFolder\'):string;
在下面的一些建议(来自MBo)然后阅读一些findfirst引用.我修改了已回答的链接变得像这样:
function TForm1.GetLastModifiedFolderName(AFolder: String): string;
var
sr: TSearchRec;
aTime: Integer;
begin
Result := '';
aTime := 0;
if FindFirst(IncludeTrailingPathDelimiter(AFolder)+'*',faDirectory, sr) = 0 then
begin
// directory found
repeat
if (sr.Attr and faDirectory)=faDirectory then
begin
// directory only
if (sr.Name <> '.') and (sr.name<>'..') then
begin
// exclude '.' and '..' directory
if sr.Time > aTime then
begin
aTime := sr.Time;
Result := sr.Name;
end;
end;
end;
until FindNext(sr) <> 0;
FindClose(sr);
end else …Run Code Online (Sandbox Code Playgroud)