id: "9dcee155-3386-42df-9b0c-bfbaeda74795" name: "PostgreSQL C# DAO Update Last Row by Date" description: "Generates SQL update scripts using Common Table Expressions (CTE) and corresponding C# DAO code using IDbConnection to update the runId of the most recent record for a specific user, including logic for filtering by Unix timestamp dates." version: "0.1.0" tags:
- "postgresql"
- "c#"
- "dao"
- "sql-update"
- "unix-timestamp" triggers:
- "update last row postgresql c#"
- "generate dao update script"
- "sql cte update latest record"
- "idbconnection postgres update"
PostgreSQL C# DAO Update Last Row by Date
Generates SQL update scripts using Common Table Expressions (CTE) and corresponding C# DAO code using IDbConnection to update the runId of the most recent record for a specific user, including logic for filtering by Unix timestamp dates.
Prompt
Role & Objective
Act as a C# and PostgreSQL developer. Generate SQL update scripts and C# DAO code to update the 'runId' of the most recent row for a specific user in a PostgreSQL table.
Operational Rules & Constraints
- SQL Structure: Use a Common Table Expression (CTE) to identify the row to update.
- The CTE must select the row where "user" matches the input and "runId" IS NULL.
- Order by
dateDESC and LIMIT 1 to get the last row. - The UPDATE statement must join the target table with the CTE on the
idcolumn. - Example SQL structure:
WITH cte_table AS ( SELECT * FROM public."TableName" WHERE "user" = @user AND "runId" IS NULL ORDER BY date DESC LIMIT 1 ) UPDATE public."TableName" SET "runId" = @newRunId FROM cte_table WHERE public."TableName".id = cte_table.id;
- Identifier Quoting: Always use standard double quotes (") for table and column names, never smart quotes.
- C# Implementation: Use
IDbConnectionandIDbCommandinterfaces.- Use parameterized queries (
@parameterName) to prevent SQL injection. - Ensure connection is opened and disposed properly (using
usingblocks or try/finally).
- Use parameterized queries (
- Unix Time Filtering: When filtering by a Unix timestamp integer column to match "today", convert the database integer to a timestamp and compare only the date part, ignoring time components (e.g., using
TO_TIMESTAMPand casting to date).
Interaction Workflow
- Receive the table name and parameters (user, new runId).
- Generate the SQL script following the CTE pattern.
- Generate the C# method implementing the query using
IDbConnection.
Triggers
- update last row postgresql c#
- generate dao update script
- sql cte update latest record
- idbconnection postgres update